我有点困惑。我有以下Entity Class for EF。
public class Identity
{
public Identity()
{
}
[Key]
public long Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public virtual ClientDetails ClientDetails { get; set; }
}
我在StackOverFlow中的几个地方读过,建议不要在构造函数中初始化导航属性(而不是集合)。
有人可以帮我理解为什么会这样吗?
由于 ANU
答案 0 :(得分:1)
导航属性由实体框架填充(至少在您检索项目时使用Include()方法告诉它填充该对象)。在封面下,它将为您导航到的对象创建外键。这可以在生成的迁移中看到。
当实体框架从数据库中检索项目时,构造函数中的任何代码都会被忽略,因为它将使用反射来实例化类的实例(此过程需要默认构造函数,或者它将抛出运行时异常),然后使用反射使用它从数据库中检索的内容设置各种属性的值。