簡體   English   中英

SQL Server關系中一個非常有趣的問題(SQL Server 2008R2,LINQ To SQL,Visual Studio 2010,C#)

[英]A very interesting problem with SQL Server Relationships (SQL Server 2008R2, LINQ To SQL, Visual Studio 2010, C#)

我正在做一個網絡項目。 我通過LINQ To SQL使用Sql Server 20008 R2數據庫,今天我遇到了一個非常奇怪的關系問題。 我使用它們已有一段時間了,到目前為止沒有任何問題。

假設我有一個表Stores ,該表Stores具有以下字段: IDNameLastUserID ,其中LastUserID是對Users表的“引用”。

Users表具有以下字段: IDNameFavoriteStoreID ,其中FavoriteStoreID是對Stores表的“引用”。

所以我有點遞歸的關系。

Store.LastUser.Name // shows the name of the last user of the store

User.FavoriteStore.Name // shows the name of user's favorite store.

在Visual Studio的設計器中,這看起來像這樣:

----------
-        -
- Users  -
-        -
----------


 |   / \
 |    |
 |    |
\ /   |


----------
-        -
- Stores -
-        -
----------

現在的問題是,當有兩個箭頭(兩個關系)時,只有其中一個起作用。 當我使用另一個Object reference not set to an instance of an object. ,我得到的Object reference not set to an instance of an object. 錯誤。

當我重新創建表時,首先添加該關系(引發異常的關系),它會起作用。 但是,當我添加另一個時,它不起作用。

所以很明顯,我弄亂了一些東西,而SQL Server不理解如何解釋我想要它做什么。

我該如何解決這個問題?

問題在於設計人員無法弄清楚循環參考。 我將通過在設計器內部創建缺少的引用來處理此問題。

聽起來好像您只需要一個時就建立了兩個實體關聯,這可能會使LINQ與SQL混淆。 在您的dbml設計器中,嘗試僅在“用戶”和“商店”表之間建立一個關聯,然后在關聯屬性中,將基數設置為OneToOne,這將在“用戶”和“商店”實體上創建子屬性和父屬性。 即使兩個表之間只有一個關聯,您仍應該能夠從User對象獲得Store,並從Store對象獲得User。

我不確定是什么問題,但是我重新創建了表,現在工作正常。 因此LINQ到SQL 確實與循環引用的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM