【问题标题】:How DbContext initializes automatic DbSet<T> properties?DbContext 如何初始化自动 DbSet<T> 属性?
【发布时间】:2013-08-13 13:20:10
【问题描述】:

考虑以下类:

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

并实例化一个新对象:

var mycontext = new MyContext();

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

【问题讨论】:

    标签: entity-framework-5 dbcontext dbset


    【解决方案1】:

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

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

    【讨论】:

    • 反射不会初始化内部 dbset 属性。如何自动初始化内部 dbset 而不是手动执行?
    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    相关资源
    最近更新 更多