更改EF

时间:2015-06-21 19:27:03

标签: c# entity-framework ef-fluent-api

我正在与我的EF模型建立多对多的关系。正在创建链接表,这很好,但它一直把它放在我不想要的DBO Schema上。是的,我可以在生成后修改迁移脚本,但应该(希望有)这样做的方法,这样架构才能正常工作。

来自我的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);

2 个答案:

答案 0 :(得分:1)

从EF6开始,您可以使用:

modelBuilder.HasDefaultSchema(“nameOfDefaultSchema”);

答案 1 :(得分:1)

ToTable有一个overload,您可以在其中指定架构名称:

x.ToTable("UsersAddresses", "Users");