在以下代码中,DbContext在派生类中实例化存储库。我相信它通过构造函数中的反射以某种方式做到了这一点。 这些是我的问题:
这是我项目中唯一的代码,我只是将entityframework引用添加到控制台应用程序项目中:
class Program
{
static void Main(string[] args)
{
var context = new DataContext();
if(context.Products != null)
Console.WriteLine("why repositories are not null?!");
}
}
public class Product
{
}
public class DataContext : DbContext
{
public IDbSet<Product> Products { get; set; }
}
答案 0 :(得分:0)
DbContext是Entity Framework程序集内部的类,因此您无法在代码中对其进行修改。因此,通过在派生类中创建DbSet属性,Entity Framework将类型T的属性映射到数据库表列。大多数内部实体框架魔法发生在DbSet类中。