DbContext如何初始化自动DbSet <t>属性?</t>

时间:2013-08-13 13:20:10

标签: entity-framework-5 dbcontext dbset

考虑以下课程:

class MyContext : DbContext
{
    public DbSet<Order> Orders { get; set; }
}

并实例化一个新对象:

var mycontext = new MyContext();

为什么mycontext.Orders不为null?什么时候初始化?谁初始化了它?我真的很困惑,因为基类(DbConetxt)无法访问派生类属性,因此不可能在基础对象中初始化自动属性。

1 个答案:

答案 0 :(得分:5)

从反射代码看,当构造DbContext(基类)时,它调用DbSetDiscoveryService(内部clasS) - 它实质上使用反射来查找DbContext上的所有属性,然后初始化那些需要初始化。

简而言之 - 在构造函数中使用反射。