我尝试首先使用多个上下文创建EF代码。 StaffContext(HR)的一个上下文,另一个是ShippingContext。
拥有多个上下文的想法有什么优势吗?因为我觉得构建起来很复杂。
我们如何构建实体?在基本上下文或每个单独的上下文中定义所有内容?
在这些情况下,我需要访问Staff实体,当我尝试更新数据库时#34;会给我一个错误,因为Staff实体已经存在于其他上下文中。我在不同背景下拥有相同实体的事实是错误的设计吗?
这就是我现在所拥有的:
public class StaffContext : BaseContext<StaffContext>
{
public DbSet<StaffPosition> StaffPositions { get; set; }
public DbSet<Staff> Staffs { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
public class ShippingContext : BaseContext<ShippingContext>
{
public DbSet<Armada> Armadas { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<Shipment> Shipments { get; set; }
public DbSet<ShipmentDetail> ShipmentDetails { get; set; }
public DbSet<ShipmentHandler> ShipmentHandlers { get; set; }
public DbSet<ShipmentOrder> ShipmentOrders { get; set; }
public DbSet<ShipmentOrderDetail> ShipmentOrderDetails { get; set; }
public DbSet<Staff> Staffs { get; set; }
public DbSet<Pangkalan> Pangkalans { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
提前多多感谢。
答案 0 :(得分:1)
我真的不知道你为什么要首先这样做 - 在我看来,只要有需要就可以重新创建一个上下文,这样会更好,更容易。但是,让我们开始:
至1:
到2:
至3,虽然已经提到:
我不觉得一般一个糟糕的设计,但它确实会带来一些你必须克服的问题,而在一个环境中拥有所有对象并没有很多缺点,如果有的话。