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