在 EF 中更改链接 table(多对多)上的数据库架构
Changing the Database Schema on a linking table (many-to-many) in EF
我正在使用我的 EF 模型创建多对多关系。正在创建链接 table,这很好,但它一直将它放在我不想要的 DBO 架构上。是的,我可以在生成迁移脚本后对其进行修改,但这应该是(希望有)一种方法可以做到这一点,以便架构正常工作。
来自我的 OnModelCreating 方法:
modelBuilder.Entity<AppUser>()
.HasMany(x => x.Addresses)
.WithMany(x => x.Users)
.Map(x => {
x.ToTable("Users.UsersAddresses");
x.MapLeftKey("UserId");
x.MapRightKey("AddressId");
});
来自生成的脚本:
CreateTable(
"dbo.[Users.UsersAddresses]",
c => new
{
UserId = c.String(nullable: false, maxLength: 128),
AddressId = c.Long(nullable: false),
})
.PrimaryKey(t => new { t.UserId, t.AddressId })
.ForeignKey("Users.Users", t => t.UserId, cascadeDelete: true)
.ForeignKey("Users.Addresses", t => t.AddressId, cascadeDelete: true)
.Index(t => t.UserId)
.Index(t => t.AddressId);
从 EF6 开始,您可以使用:
modelBuilder.HasDefaultSchema(“nameOfDefaultSchema”);
ToTable
有一个 overload,您可以在其中指定架构名称:
x.ToTable("UsersAddresses", "Users");
我正在使用我的 EF 模型创建多对多关系。正在创建链接 table,这很好,但它一直将它放在我不想要的 DBO 架构上。是的,我可以在生成迁移脚本后对其进行修改,但这应该是(希望有)一种方法可以做到这一点,以便架构正常工作。
来自我的 OnModelCreating 方法:
modelBuilder.Entity<AppUser>()
.HasMany(x => x.Addresses)
.WithMany(x => x.Users)
.Map(x => {
x.ToTable("Users.UsersAddresses");
x.MapLeftKey("UserId");
x.MapRightKey("AddressId");
});
来自生成的脚本:
CreateTable(
"dbo.[Users.UsersAddresses]",
c => new
{
UserId = c.String(nullable: false, maxLength: 128),
AddressId = c.Long(nullable: false),
})
.PrimaryKey(t => new { t.UserId, t.AddressId })
.ForeignKey("Users.Users", t => t.UserId, cascadeDelete: true)
.ForeignKey("Users.Addresses", t => t.AddressId, cascadeDelete: true)
.Index(t => t.UserId)
.Index(t => t.AddressId);
从 EF6 开始,您可以使用:
modelBuilder.HasDefaultSchema(“nameOfDefaultSchema”);
ToTable
有一个 overload,您可以在其中指定架构名称:
x.ToTable("UsersAddresses", "Users");