我正在拼命尝试使用Entity Framework模型设计器实现可以为空的外键。
有问题的表格如下:
设置应该是正确的,因为我的类是使用Sender
属性生成的,如下所示:
public Nullable<int> SenderId { get; set; }
但是,在调用Context.Database.Create();
时,创建的数据库SenderId
属性不可为空。
如果我在数据库中手动将列类型更改为可为空,我在EF中会收到模型和数据库不同的错误。
有什么建议吗?
谢谢!
答案 0 :(得分:2)
我遇到了和你一样的问题
尝试像这样设置发件人ID:
public int? SenderId { get; set; }
如果这对您没有帮助,您可以如上所示更改属性,并在完成后手动修改数据库。应该没有区别。
答案 1 :(得分:0)
好的,在搞乱了几个小时之后,我终于找到了问题的根源:我的实体模型的edmx文件。
虽然Visual Studio实体模型设计器向我展示了该列可以为空(或者我将其设置为可为空),但我必须发现.edmx文件本身并未应用这些更改。我在编辑器中手动更改了.edmx文件。
<Property Name="SenderId" Type="Int32" Nullable="true" />
Nullable属性最初设置为false ...顺便说一句:关联也没有保存,我必须在文本编辑器中自己设置0..1关联,因为外键现在可以为空。 无论如何,谢谢你的帮助!