我希望每个人都记得罗斯文数据库。因为它有一个 Employee 表,该表具有对自身的自我引用。外键被命名为“ReportTo”或类似的东西,它又是一个 Nullable 字段。
我正在尝试使用 EF Code First 加 MVC3 为手头的项目实现这样的表。场景是:有一个 Man 类,User 是从该类派生的。提到的字段“ReportTo”设置在后一个类(用户)上。这是 POCO:
[LocalizedAttribute("ReportTo")]
public long ReportsTo { get; set; }
[ForeignKey("ReportsTo")]
public virtual IList<User> ReportsChild { get; set; }
但是 EF 在数据库中将此字段生成为“非空”。我曾尝试?
完全使用 after IList<User>
,这看起来IList<User>?
会产生错误。我还尝试将其定义为流畅的 API:
modelBuilder.Entity<User>().Property(s => s.ReportsChild).IsOptional();
但是以上两种方式都给了我这个错误:
类型“System.Collections.Generic.IList”必须是不可为空的值类型,才能将其用作泛型类型或方法“System.Nullable”中的参数“T”
我在网上冲浪,但我可以找到与我已经做过的类似的解决方案。
可能是什么原因?如果我更改IList<User>
为User
,它仍然可以作为外键正常工作吗?我怎样才能摆脱这个错误?