TBL*_*L23 5 c# entity-framework dbcontext
我想知道为什么DbContext使用实体框架时的核心类是一个具体类。
事实上,我们从不直接使用这个类,只是通过继承它。
将其声明为抽象不是更清晰吗?它成为具体类的原因是什么?
只有做出这个决定的人才能肯定地告诉你。但是,请注意,没有任何行为DbContext必须由子类提供,因此如果您将其设为抽象 - 那只是因为您想防止直接使用它。但可以直接使用:
using (var ctx = new DbContext("EntityConnectionString")) {
var errors = ctx.Set<Error>().ToArray();
Console.WriteLine(errors.Length);
}
Run Code Online (Sandbox Code Playgroud)
如果您传递实体连接字符串(或 app.config 中的名称) - 它可以从您的 emdx 模型构建模型(并且也可以直接在其他场景中使用)。这样您就可以像往常一样进行查询、保存更改等,而无需DbSet使用Set<T>方法声明的属性。
由于它在单独使用时不会被破坏 - 我认为没有太多理由通过使其抽象来防止这种情况发生。