2017-05-23 33 views
0

我有以下性質的實體:獲取簡單的屬性和導航屬性之間的映射 - 實體框架5

簡單的屬性:

public int ParentLocationID {get; set;} 
public int ChildLocationID {get; set;} 

導航屬性:

public Location Location1 {get; set;} 
public Location Location2 {get; set;} 

在這裏,無論是簡單的屬性引用與位置表的外鍵關係。當我打開模型的Designer.cs時,可以使用此信息。

但是我怎麼能在代碼中知道ParentLocationID正在使用哪個導航屬性Location1或Location2?

+0

你可以發佈你的實體類嗎?你也可以查看這個頁面。 http://www.learnentityframeworkcore.com/configuration/data-annotation-attributes/foreignkey-attribute。 – Miguel

+0

@Haksu實體類與我剛剛提到的其他簡單屬性類似。另外,我的場景不是IEntityCollection的場景。它用於一對一映射。 – Mustafa

回答

1

使用ForeignKey註釋?

using System.ComponentModel.DataAnnotations.Schema; 

public class MyModel 
{ 
    public int ParentLocationID {get; set;} 
    public int ChildLocationID {get; set;} 

    [ForeignKey("ParentLocationID")] 
    public Location Location1 {get; set;} 
    [ForeignKey("ChildLocationID")] 
    public Location Location2 {get; set;} 
} 

這是你的意思嗎?

+0

我可以使用它作爲選項。謝謝回覆。 – Mustafa

0

但是我怎麼能知道在代碼中ParentLocationID正在使用哪個導航屬性Location1或Location2?

您可以在EDXM模型瀏覽器中重命名導航屬性。只需右鍵點擊導航屬性並重命名它,而不是Location1,您可以將其更改爲ParentLocation

如果您從數據庫更新任何次數的模型,這將會存活。但是,如果您完全從EDMX中刪除表格並重新創建表格,則需要重新命名(但很少這樣做)。

+0

感謝您的回覆。但我不想採用這種方法,因爲我必須更新代理中的參考。 – Mustafa

+0

你在說什麼代理? – CodingYoshi

+0

@Mustafa如果你正在談論自動生成的代碼,它會將它們全部重命名爲你。這是使用db第一種方法做事的正常方式。 – CodingYoshi