EF Core多个DbContexts用于一个数据库

时间:2018-02-11 02:53:16

标签: c# asp.net entity-framework-core ef-migrations

我要将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>

0 个答案:

没有答案