2013-12-19 62 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