我要将DbContext
作为单个项目分开,并与两个项目共享DbContext
。
现在假设我有:
Project.Data
namespace Project.Data
{
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, long>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options) { }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
public DbSet<Bar> Bars{ get; set; }
public DbSet<Foo> Foos{ get; set; }
}
}
}
我的桌面客户端和网络应用需要一个不同的DbContext
模型。说,像这样:
Project.Client (使用基本上下文)
namespace Project.Client
{
public class ApplicationDbContext : Project.Core.ApplicationDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{ }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
}
Project.Web (使用一些额外的DbSet
s)
namespace Project.Web
{
public class ApplicationDbContext : Project.Core.ApplicationDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{ }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
public DbSet<Hoge> Hoges{ get; set; }
}
}
}
我担心的是,即使它有效,一旦在Project.Client
的上下文中进行迁移,表Hoges
也会被删除,因为在DbSet
中没有相应的DbContext
DbSet
。
这种方法是否可行,还是我需要采取另一种方式?我认为一个解决方案是在Project.Data
中包含所有DbContext
并让两个应用程序按原样使用{{1}},但我不想这样做。< / p>