将 MVC5 与 EF6 结合使用,我试图为所有应用程序表名称添加前缀,以便我可以将 2 个应用程序放入一个数据库中,并让它们完全独立运行。我需要两组不同的用户/角色/声明/等,所以我不能使用另一个应用程序中已经存在的相同 AspNet 表名。
看完this SO question ,我找到了答案:
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Types().Configure(c => c.ToTable("prefix_" + c.ClrType.Name));
}
这会导致使用 Add-Migration 时出错,所以我不得不添加
base.OnModelCreating(modelBuilder);
我的方法来平息错误。
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Types().Configure(c => c.ToTable("prefix_" + c.ClrType.Name));
}
但是,无论我是在我的类型配置代码之上还是之下添加这一行,AspNet 表都不会更改名称。这就像类型配置行被完全忽略了。
它可以很好地更改名称,但是,如果我喜欢这样:
modelBuilder.Entity<ApplicationUser>().ToTable("SomeFunkyTableName");
当然,这只会更改 AspNetUsers 表。我什至不确定要指定哪些模型来更改其他模型。
我的总体目标是拥有以下表格,最好不必手动分配它们: prefix_AspNetRoles prefix_AspNetUserClaims prefix_AspNetUserLogins prefix_AspNetUserRoles prefix_AspNetUsers
除此之外,我希望我的代码优先创建的所有其他表都具有相同的前缀。我怎样才能做到这一点?为什么我的代码被忽略了?
最佳答案
为什么不使用模式而不是前缀表?
您可以使用以下设置默认架构
modelBuilder.HasDefaultSchema("MySchema"); // Replace MySchema with the name of your prefix
要为每个表设置架构,您可以使用
modelBuilder.Entity<ApplicationUser>().ToTable("SomeFunkyTableName", "MySecondSchema");
关于asp.net-mvc - 为 EF6 中的所有表名称添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25706377/