4

考虑以下类:

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

并实例化一个新对象:

var mycontext = new MyContext();

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

4

1 回答 1

6

通过查看反射代码,当构建 DbContext(基类)时,它会调用 DbSetDiscoveryService(内部类)——它本质上使用反射来查找 DbContext 上的所有属性,然后初始化那些需要初始化的属性。

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

于 2013-08-14T07:16:24.187 回答