gpt4 book ai didi

asp.net-mvc - 为 EF6 中的所有表名称添加前缀

转载 作者:行者123 更新时间:2023-12-05 03:14:21 26 4
gpt4 key购买 nike

将 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_AspNetRolesprefix_AspNetUserClaimsprefix_AspNetUserLoginsprefix_AspNetUserRolesprefix_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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com