我正在开发一个ASP.NET MVC 5.1项目,我首先使用ASP.NET身份功能和代码。
默认情况下,ASP.NET标识具有自己的datacontext( IdentityModels.cs ),它继承 Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext 。
因为我害怕影响身份模型。
所以我创建了另一个上下文继承 DbContext ,并通过以下命令创建另一个迁移配置:
enable-migrations -ContextTypeName PosApp.Models.OtherContext -MigrationsDirectory :OtherContextMigrations
使用特定的配置命令行来更新数据库:
添加迁移 -ConfigurationTypeName PosApp.OtherContextMigrations.Configuration -Name GenDB更新 - 数据库 -ConfigurationTypeName PosApp.OtherContextMigrations.Configuration
但是,我发现它会导致表之间的迁移冲突。
例如:
DataContext A和配置A:
生成表:博客,发布,评论
DataContext B和配置B: 生成表:用户,但引用博客(1:N,表示1个用户可以拥有自己的多博客)。
如果我在Config B上输入命令行 - add-migration 。
Blog表将再次生成,并且由于该表存在于Config A上而发生冲突。
即使我可以覆盖OnModelCreating()
事件并使用modelBuilder.ignore<T>
,但这会造成混乱。
那么我是否应该避免多配置迁移?
还是有什么好处?
答案 0 :(得分:0)
你使用moddelBuilder.ignore走在正确的轨道上。在您的identityDbContext中添加:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Ignore<Blog>();
base.OnModelCreating(modelBuilder);
}
然后,要使用从用户到博客的关系,请创建一个继承自IdentityDbContext的新数据上下文,并不要向其添加迁移。