Разработвам плъгин приложение с 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
?