【发布时间】:2010-08-19 16:41:54
【问题描述】:
我有一个表,其中包含一个可以为空的整数字段,该字段是外键。当我尝试将实体模型的 Nullable 属性设置为 True 时,我收到一个错误,指出 Int32 类型的字段不能为空。因此,如果 Entity Framework 不支持可为空的整数,我如何将行插入到具有空值的表中?如果没有为可空属性指定值,Entity Framework 插入一个值 0,由于外键约束而引发错误。
SQL Server 可以使用可为空的外键,因此我想保留检查约束。我在这里有什么选择?
提前致谢!
【问题讨论】:
-
错误前提。 EF 确实 支持可为空的 int。但是
int和int?是两种不同的类型。针对可为空的 int 列生成一个新模型,您会看到。在我看来,您的数据库模型并不是您想象的那样。 -
好的,所以问题是在将实体模型的 Nullable 属性设置为 True 之后,我还必须将外键关系的 Multiplicity 属性设置为零或一。这使错误消失并生成了正确的模型。当我尝试从数据库更新模型时,我很惊讶 EF 没有这样做,但无论哪种方式,我现在都准备好了!如果您重新发布您对我的断言的更正作为答案,我会接受它。谢谢!
标签: sql-server entity-framework