我想将父DbContext继承到一个独立模块中,以便可以使用基础存储库的常用方法。
这是代码示例。
我的父级DbContext类
public class MyContext1 : DbContext
{
public DbSet<MyEntity1> MyEntities1 { get; set; }
}
我的父基础存储库类并创建DbContext1对象
public abstract class BaseRepo<T>
{
private MyContext1 _context1;
public BaseRepo()
{
_context1 = new MyContext1();
}
// common methods
}
我创建了一个独立的类库模块,并添加了我的数据项目的引用。
在这里,我创建了另一个DbContext并继承了父级。
public class MyContext2 : MyContext1
{
public DbSet<MyEntity2> MyEntities2 { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//configuring the entities2
base.OnModelCreating(modelBuilder);
}
}
我在一个模块中有一个存储库类,并在DbContext2上创建对象。
public class MyRepository : BaseRepo<MyEntity2>
{
private MyContext2 _context2;
public MyRepository()
{
_context2 = new MyContext2();
}
}
这是一个好的架构吗?
当我从模块调用方法时,我的存储库将创建DbContext2的对象,但它也继承了基本存储库,因此也创建了DbContext1的对象。因此,基本上DbContext2将具有父实体的所有访问权限,并且还将创建DbContext1。
任何建议将不胜感激。
谢谢
伊姆兰·汗