2010-05-31 79 views
4

我有兩個對象(FooBar),它們之間有一對一或一對一的關係。因此,Foo有一個可空的外鍵引用Bar.ID和一個(nullbusted)唯一索引來強制執行「1」端。 Bar.ID是一個i​​nt,所以Foo.BarID是一個可爲空的int。LINQ到SQL中的整數鍵與空值一對一關係

問題發生在.NET類型到SQL數據類型的LINQ到SQL DBML映射中。由於int在.NET中不是可空類型,因此它被包裝在Nullable<int>中。然而,這是不一樣的類型int,所以Visual Studio中給了我此錯誤消息時,我嘗試在它們之間建立OneToOne協會:

無法創建一個協會「Bar_Foo」。屬性沒有匹配的類型:「ID」,「BarID」。

有沒有辦法解決這個問題?

+0

卡住了相同的問題。你找到解決方案嗎? – Denis 2014-11-19 23:29:53

回答

2

到目前爲止,我已經通過將Bar.ID(主鍵)設置爲CanBeNull="true"來解決此問題,這絕對是醜陋的。我希望在這裏有更好的解決方案。

+0

我絕對不想這樣做,因爲我們經常刷新我們的dbml文件,它會被覆蓋。你有沒有找到更好的方法? – JumpingJezza 2011-08-04 05:06:42

+0

不,從來沒有,雖然我很久以前就停止了。也許你的dbml-refreshing工具可以設置爲重新實現這個改變? – 2011-08-04 05:24:13