修改实体框架生成的中间表的表模式
本文关键字:中间 模式 实体 框架 修改 | 更新日期: 2023-09-27 18:13:50
我得到了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在这里尝试
你试过这样吗?
基本上,您自己创建中间表,并与它有多对一关系。这样,您就可以指定任何您喜欢的内容。当然,缺点是不能像处理集合那样处理关系。