拆分多个DbContexts

时间:2014-02-18 03:28:10

标签: entity-framework repository-pattern dbcontext unit-of-work

我已阅读并看过几个关于拆分或多个DbContext的项目,我不确定什么是最佳实践..我应该为每个实体创建每个DbContext还是在一个DbContext中包含所有实体?

这就是我现在所拥有的。

public class PersonsContext : DbContext
{
    public PersonsContext() : base("name=EmployeeContext")
    {
    }

    public DbSet<Person> People { get; set; }
}

public class OrderContext : DbContext
{
    public OrderContext() : base("name=EmployeeContext")
    {
    }

    public DbSet<Order> People { get; set; }
}

1 个答案:

答案 0 :(得分:2)

实际上,您不需要为每个实体创建一个DbContext。但是,您可以为单个数据库使用多个DbContext。举个例子,假设你想将应用程序的业务方面和安全方面分成两个不同的模块。当然,您可以有两个不同的上下文,例如SecurityContext,其中所有与Security相关的实体和BusinessContext都包含与业务相关的实体。 例如:

public class SecurityContext : DbContext{

    public PersonsContext() : base("name=securitycontext"){
    }

    public DbSet<User> User { get; set; }
    public DbSet<Role> Role { get; set; }
    public DbSet<Group> Group { get; set; }
}

public class BusinessContext : DbContext{

    public OrderContext() : base("name=businesscontext"){
    }

    public DbSet<Order> Order { get; set; }
    public DbSet<OrderLine> OrderLine { get; set; }
    public DbSet<Customer> Customer { get; set; }
}