2013-12-19 118 views
1

Linq-to-SQL任務。Linq-to-SQL外鍵是枚舉

查看圖片。

enter image description hereenter image description here

enter image description hereenter image description here

enter image description here

當我嘗試實例,我得到運行時異常「空值不能分配給具有類型XAccountId成員這是一個非可爲空值的類型「。當我將Type從XAccountId更改爲int時,所有內容都按預期工作。爲什麼?我如何使用我的枚舉作爲鍵的類型?

附加:雖然我在屬性窗口中設置Nullable = true,但生成的代碼是private XAccountId _AccountId1 = default(XAccountId);。所以...... DBML生成器工作不正確?

加入2:http://social.msdn.microsoft.com/Forums/en-US/ee4f5703-570c-47bf-8003-bf15bd0f1441/map-nullable-enum有關我的問題。對於枚舉,DBML生成器忽略CanBeNull =「true」。

+3

現在還不清楚發生了什麼事。 –

回答

1

您可以設置類型爲XAccountId?(帶問號)。正如錯誤所述,您不能將空值分配給值類型,只能將其分配給引用類型;和enum是一個值類型。另一種方法是讓你的列不能爲空。

+0

我以前試過。有用。但。我被迫設置XAccountId?在XAccount中也是如此,但它不是模型可以空的。 – Denis

+0

如果我在讀你的模型正確,你將其設置爲模型(倒數第二屏幕)空的,你已經強調了它作爲空的,它不應該是「可爲空 - 假」呢?它如何在db中定義? – Konstantin

+0

在XAccount中它是不可空的(它是數據庫中的主鍵)。在XSourceSystem中,它可能爲null(與XSourceSystem沒有關聯的XAccount)。 – Denis