c# - 更改 Entity Framework 生成的中间表的表模式

标签 c# entity-framework ef-code-first

我有这样的 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/

相关文章:

c# - Xamarin iOS 覆盖自签名证书的 TLS 链验证

c# - Unity3D-Google Play 64位要求存在问题

c# - 如何首先在 Entity Framework 代码中映射不同数据类型的列和实体属性

c# - LINQ 或 Entity Framework 创建无界 SQL 语句

c# - 在 Entity Framework 中使用 Code First 重命名表

c# - 首先使用 ASP.NET MVC 4 迁移代码的foreignkey

entity-framework - Entity Framework 6.1 将我的数据库放在哪里?

c# - 机器人程序/蜘蛛程序可以使用 Cookies 吗?

c# - 类中的属性是 IEnumerable<TDto> get TDto.A == a

entity-framework - 添加实体模型时出现错误 3007