更改实体框架中生成的联接表的属性名称(多对多关系),

问题描述 投票:0回答:1

我创建了两个模型,Order(用于商店订单)和 ShopItem(用于商店产品)。这两个模型具有多对多的关系。它们如下:

订单型号

public class Order
{
    [Key]
    public string order_id { get; set; }
    public List<ShopItem> Items { get; set; }
    //some other info...
}

ShopItem 模型

public class ShopItem
{
    [Key, Column("shop_item_id")]
    public string ItemId { get; set; }
    public List<Order> Orders { get; set; }
    //some other info...
}

为了在 DBContext 中提供多对多关系,我做了接下来的事情:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Order>()
        .HasMany(a => a.Items)
        .WithMany(a => a.Orders)
        .UsingEntity("OrderItemJoinTable");
}

进行迁移后,我得到一个名为 OrderItemJoinTable 的表,其属性如下: ItemsItemId; 订单order_id。 问题是我需要为它们起一个正确的名称,例如“item_id”和“order_id”。如何更改此表中此类属性的名称?

c# sql-server entity-framework
1个回答
0
投票

在配置中包含列名称。

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Order>()
            .HasMany(a => a.Items)
            .WithMany(a => a.Orders)
            .UsingEntity(j => 
            {
                j.ToTable("OrderItemJoinTable");
                j.Property("ItemsItemId").HasColumnName("item_id");
                j.Property("Ordersorder_id").HasColumnName('order_id')
            };
    }
© www.soinside.com 2019 - 2024. All rights reserved.