EF7 - HasOne關係的自定義列名稱

entity-framework entity-framework-core

如何在EF7中指定具有HasOne關係的自定義列名?

請考慮以下示例類:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

這個流暢的配置:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

這導致了這個數據庫配置:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

如何在House表中指定“AddressId”以外的列名?我找不到類似於HasColumnName的方法,就像在非導航屬性上一樣。

我正在使用Entity Framework 7 RC1-Final。

熱門答案

您可以使用Data Annotations來配置關係的外鍵。

public int AddressID { get; set; }

[ForeignKey("AddressID")]
public Address Address { get; set; }

這需要一個將用作關係中的外鍵的屬性。另請注意,除了影子外鍵之外,建議您為關係設置顯式外鍵。這將阻止您在插入/更新時遇到很多問題,因為您不需要設置整個導航屬性Address來保存House實體。在這裡看到問題

沒有測試但也許這可行(現在找不到安裝EF7的方法)

public int AddressID { get; set; }

[ForeignKey("AddressID")]
public Address Address { get; set; }

您可以在此處查看更多示例: 外鍵關係EF7




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因