Entity framework 我应该避免在代码优先项目上进行多数据上下文和迁移配置吗?

Entity framework 我应该避免在代码优先项目上进行多数据上下文和迁移配置吗?,entity-framework,Entity Framework,我正在从事一个ASP.NETMVC5.1项目,我将首先使用ASP.NETIdentity功能和代码 默认情况下,ASP.NET标识具有自己的datacontext标识Models.cs,该标识继承Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext 因为我害怕影响身份模型 因此,我在errit DbContext中创建另一个上下文,并通过以下命令创建另一个迁移配置: 启用迁移-ContextTypeName PosApp.Mode

我正在从事一个ASP.NETMVC5.1项目,我将首先使用ASP.NETIdentity功能和代码

默认情况下,ASP.NET标识具有自己的datacontext标识Models.cs,该标识继承Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext

因为我害怕影响身份模型

因此,我在errit DbContext中创建另一个上下文,并通过以下命令创建另一个迁移配置:

启用迁移-ContextTypeName PosApp.Models.OtherContext-迁移目录:OtherContextMigrations

并使用特定的配置命令行更新数据库:

添加迁移-ConfigurationTypeName PosApp.OtherContextMigrations.Configuration-名称GenDB更新数据库 -ConfigurationTypeName PosApp.OtherContextMigrations.Configuration

但是,我发现这会导致表之间的迁移冲突

例如:

DataContext A和配置A:

生成表格:博客、帖子、评论

DataContext B和配置B: 生成Table:User,但引用Blog 1:N,这意味着1个用户可以拥有自己的多个Blog

如果我键入命令行-根据配置B添加迁移

Blog表将再次生成,并且会发生冲突,因为该表存在于配置A中

即使我可以重写OnModelCreating事件并使用modelBuilder.ignore,但这会导致混乱

那么,我应该避免多配置迁移吗


还是有什么好处

使用moddelBuilder.ignore,您的思路是正确的。在您的identityDbContext中添加:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Ignore<Blog>();
        base.OnModelCreating(modelBuilder);
    }
然后,要使用从用户到博客的关系,请创建一个从IdentityDbContext继承的新数据上下文,不要向其中添加迁移