【问题标题】:Change name of generated Join table ( Many to Many ) - EF Core 5更改生成的联接表的名称(多对多)-EF Core 5
【发布时间】:2021-03-03 06:50:35
【问题描述】:

如何更改 EF Core 5 创建的连接表的名称?

例如

 public class Food 
    {
        public int FoodId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public string Ingredients { get; set; }
        public string PhotoPath { get; set; }
        public ICollection<Menu> Menus { get; set; }
    }

  public class Menu
    {
        public int MenuId { get; set; }
        [Column(TypeName = "date")]
        public DateTime MenuDate { get; set; }
        public bool IsPublished { get; set; }
        public ICollection<Food> Foods { get; set; }
    }

以及这两个名为 FoodMenu 的实体的连接表,我想将其更改为其他内容..

【问题讨论】:

    标签: c# entity-framework-core ef-core-5.0


    【解决方案1】:

    接受的答案缺少我必须努力解决的重要部分。

    首先,你需要安装包

    Microsoft.EntityFrameworkCore.Relational
    

    然后你可以在你的OnModelCreating重写方法中添加以下内容

    modelBuilder.Entity<Food>()
        .HasMany(left => left.Menus)
        .WithMany(right => right.Foods)
        .UsingEntity(join => join.ToTable("NameYouWish"));
    

    【讨论】:

    • 如果您安装 EF Core 提供程序,例如 Microsoft.EntityFrameworkCore.SqlServer,那么您不需要安装该软件包
    • 正确,但默认情况下您不安装它。我只有 EF Core 包。
    • 所有ToTableHasColumnName等流式API都需要这个包,对于多对多配置没什么特别的,因此无需明确提及。
    【解决方案2】:

    您可以使用UsingEntity 方法重载之一,例如UsingEntity(Action&lt;EntityTypeBuilder&gt;)

    由于是关系流式配置API,首先需要HasMany + WithMany 对,例如

    modelBuilder.Entity<Food>()
        .HasMany(left => left.Menus)
        .WithMany(right => right.Foods)
        .UsingEntity(join => join.ToTable("TheDesiredName"));
       
    

    【讨论】:

    • @KonradViltersten 有一种方法 - stackoverflow.com/questions/65779730/…,但我不会称它为“聪明”:-) 没有检查过新的 EFC 6.0 已经改进了它(有一些计划,不确定他们是否成功)。
    • 我会选择this,因为我在 EF 上从 5.0.0 升级到 5.0.12,这显然可以工作。确实不够聪明。 (嗯,也许它很聪明但不必要的冗长,IM!HO。)但至少工作。并感谢您的回复。欣赏。
    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 2021-06-12
    • 1970-01-01
    • 2021-11-16
    • 2021-04-07
    • 2021-04-24
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多