我正在开发一个带EF6的插件应用程序,代码优先。实体框架:跨不同的DbContexts共享实体
我有一个实体的一个主要方面称为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
?
为什么不从MainContext继承PluginContext。 – hazimdikenli 2015-01-16 07:32:36