entity-framework - 拆分多个 DbContext

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

最佳答案

实际上,您不需要为每个实体创建一个 DbContext。但是单个数据库可以有多个 DbContext。举个例子,假设您希望将应用程序的业务方面和安全方面分成两个不同的模块。当然,您可以有两个不同的上下文,例如 SecurityContext,其中包含与安全相关的所有实体,而 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; }
}

关于entity-framework - 拆分多个 DbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21843751/

相关文章:

entity-framework - PostSharp OnExceptionAspect + EF 6 DbUpdateException

c# - 使用 linq 加载除另一个集合之外的集合

c# - ODAC 11.2 版本 4 (11.2.0.3.0) 抛出 "Oracle 11.2.0.2.0 does not support APPLY"异常

repository-pattern - 当不同实体的工作大不相同时,我应该如何管理通用存储库模式?

c# - Entity Framework 代码优先 ASP.Net 和 DbContext

c# - 参数类型不能分配给参数类型,尽管它继承

c# - 使用嵌套的子实体重新附加修改后的实体

c# - 访问 NavigationProperty 的关联详细信息

php - Laravel 仓库模式解释

asp.net-mvc - 如何使用存储库模式查询交叉表?