我正在使用EF6开发一个插件应用程序,首先编写代码。
我有一个与实体有关的主要上下文User
:
public class MainDataContext : DbContext
{
public MainDataContext(): base("MainDataContextCS") {}
public DbSet<User> Users { get; set; }
}
然后是另一个项目的PluginX上下文,该上下文引用了基础项目:
public class PluginDataContext : DbContext
{
public PluginDataContext () : base("MainDataContextCS") {
}
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.HasDefaultSchema("PluginX");
base.OnModelCreating(modelBuilder);
}
public DbSet<Booking> Bookings { get; set; }
}
这样就可以在同一数据库(相同的连接字符串)上巧妙地创建PluginX.Bookings
表。
这里的问题是Booking
实体包含对实体的引用User
:
public class Booking
{
public int Id { get; set;}
public virtual User CreationUser { get; set;}
public BookingStatus Status { get; set; }
}
当运行Add-Migration
插件上下文时,EF将尝试创建另一个User
名为的实体PluginX.User
。
如何解决呢?有没有一种方法可以共享一个公共实体DbContext
?
当您使用多个上下文时,有两个选择:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句