在 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");