继承其他模块中的数据库上下文

时间:2019-07-19 06:49:09

标签: entity-framework-6 dbcontext

我想将父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。

任何建议将不胜感激。

谢谢

伊姆兰·汗

0 个答案:

没有答案