How DbContext initializes automatic DbSet prope

2020-04-11 19:00发布

Consider the following class:

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

and instantiating a new object:

var mycontext = new MyContext();

Why mycontext.Orders is not null? When it was initialized? Who has initialized it? I'm really confused because the base class (DbConetxt) cannot access the derived class properties so it is not possible that the automatic property was initialized in the base object.

1条回答
Root(大扎)
2楼-- · 2020-04-11 19:49

From looking at the reflected code, when the DbContext (the base class) is constructed it makes a call to the DbSetDiscoveryService (an internal clasS) - which essentially uses reflection to find all properties on the DbContext, and then initializes those that need initializing.

So in short - using reflection in the constructor.

查看更多
登录 后发表回答