实体框架导航属性自定义命名

时间:2020-08-01 07:22:07

标签: .net-core entity-framework-core ef-code-first

在使用Entity Framework建立两个实体之间的连接时(首先使用代码),我发现很难处理属性的命名。

在下面的代码示例中,它将找不到正确的连接,并会请求不存在的名为airline_iata_airline_code的列,因此即使我设置了外键属性(给它提供类名),它也会失败相关类),并定义了要在其他类中查找的列名。

[ForeignKey("AirlineDto")]
[Column("iata_airline_code")]
public string IataAirlineCode { get; set; }

这不起作用,但是如果我将其更改为以下示例,它将找到该关系并从数据库返回正确的数据(而不是名称更改)。

[ForeignKey("AirlineDto")]
[Column("iata_airline_code")]
public string AirlineIataAirlineCode { get; set; }

问题是我不想将其称为<RelatedClass><PrimaryKey>。我希望能够定义自己的名字。该怎么办?

2 个答案:

答案 0 :(得分:0)

您没有指定是否使用Code First,而是在DBConext类上尝试以下操作:

    protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<YourClassName>().Property(x => x.IataAirlineCode).HasColumnName("iata_airline_code");
}

答案 1 :(得分:0)

我在本指南中找到了一种解决方案:https://www.c-sharpcorner.com/article/navigation-property-with-code-first-navigation-property-in-ef/

由于我无法通过将外键属性添加到变量来使自定义命名起作用,因此我更改了方法并将其添加到导航属性。两种方法都在网站上进行了解释。

工作示例如下:

// Relations
public string IataAirlineCode { get; set; }

// Navigation
[ForeignKey("IataAirlineCode")]
public AirlineDto Airline { get; set; }