我正在与我的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);
答案 0 :(得分:1)
从EF6开始,您可以使用:
modelBuilder.HasDefaultSchema(“nameOfDefaultSchema”);
答案 1 :(得分:1)
ToTable
有一个overload,您可以在其中指定架构名称:
x.ToTable("UsersAddresses", "Users");