EF和初始化导航属性

时间:2017-10-28 03:14:02

标签: c# entity-framework

我有点困惑。我有以下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

1 个答案:

答案 0 :(得分:1)

导航属性由实体框架填充(至少在您检索项目时使用Include()方法告诉它填充该对象)。在封面下,它将为您导航到的对象创建外键。这可以在生成的迁移中看到。

当实体框架从数据库中检索项目时,构造函数中的任何代码都会被忽略,因为它将使用反射来实例化类的实例(此过程需要默认构造函数,或者它将抛出运行时异常),然后使用反射使用它从数据库中检索的内容设置各种属性的值。