在使用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>
。我希望能够定义自己的名字。该怎么办?
答案 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; }