我有这样的 M:N 关系模型:
[Table("Messages", Schema = "public")]
public class Message
{
public int Id { get; set; }
public virtual IList<Phone> Phones{ get; set; }
}
[Table("Phones", Schema = "public")]
public class Phone
{
public int Id { get; set; }
public virtual IList<Message> Messages{ get; set; }
}
所以 EF 为我生成了中间表... 但是表的默认模式不是公开的(这是我需要的),但仍然是 dbo。并给我错误:架构“dbo”不存在。
如何在不创建 MessagePhone 模型类的情况下更改 MessagePhone 表的表架构?
最佳答案
我认为这是可行的。您将必须覆盖 DbContext 类的 OnModelCreating 并使用流畅的 API 进行配置:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Message>().HasMany<Phone>(m => m.Phones).WithMany(p => p.Messages).Map
(
x =>
{
x.ToTable("MessagePhone", "public");
}
);
}
你将不得不测试这个,不确定我的所有语法是否正确..这里没有 VS 来尝试它。
关于c# - 更改 Entity Framework 生成的中间表的表模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554210/