1

我已阅读并看到几个项目,谈论分裂或多个DbContext,我不知道什么是最佳实践..我应该为每个实体创建每个DbContext或具有一个DbContext中的所有实体?分裂多个DbContexts

这就是我现在所拥有的。

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; } 
} 
+0

结帐这个答案http://stackoverflow.com/questions/21341636/how-can-i-tell-the-web-api-castle-windsor-routing-engine-to-use-一个-不同-DA/21355365#21355365 – Ehsan

回答

1

其实你不需要为每个实体创建一个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; } 
}