I'm developing a plugin application with EF6, code first.
I have one main context with an entity called User
:
public class MainDataContext : DbContext
{
public MainDataContext(): base("MainDataContextCS") {}
public DbSet<User> Users { get; set; }
}
And then another context for PluginX, on another project which references the base one:
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; }
}
And this neatly creates, on the same Database (same connection string), the PluginX.Bookings
Table.
The problem here is that the Booking
entity contains a reference to User
entity:
public class Booking
{
public int Id { get; set;}
public virtual User CreationUser { get; set;}
public BookingStatus Status { get; set; }
}
And when running Add-Migration
for the plugin context EF will try to create another User
entity called PluginX.User
.
How can this be solved? Is there a way to share a common entity, in another DbContext
?
When you work with multiple contexts you have two options: