实体框架中的 DbSet

use*_*764 3 .net c# entity-framework

我在实体框架中有以下代码:

using(var dbc = new TestDbContext())
{
    var data = (from a in dbc.tableList
                select new { a = id }).ToList();
}
Run Code Online (Sandbox Code Playgroud)

当我调试代码时,我遇到了以下代码

public class TestDbContext : DbContext
{
     public TestDbContext()
     { 
     }

     public DbSet<Table> tableList {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我想知道甚至没有创建这样的实例DbSet<Table>

public Dbset<Table> tableList = new Dbset<Table>();
Run Code Online (Sandbox Code Playgroud)

我怎样才能查询表,例如:

var data = (from a in dbc.tableList
            select new { a = id }).ToList();
Run Code Online (Sandbox Code Playgroud)

Pun*_*ani 6

这没有什么神奇之处。TestDbContext源自DbContext

DbContext调用内部类DbSetDiscoveryService,该类使用反射来遍历DbSet属性并初始化它们。

EF 的单声道版本,您可以在Github上找到显示调用的代码InitializeSets

  • 我会说这就是魔法的定义。奇怪的未知机制。 (4认同)