[英]Visual Studio 2008 Business Intelligence SQL Server, Install 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
具有以下字段: ID
, Name
, LastUserID
,其中LastUserID
是對Users
表的“引用”。
Users表具有以下字段: ID
, Name
, FavoriteStoreID
,其中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.