2014-01-17 29 views
0

我看過類似的問題;但沒有一個完全一樣;沒有人幫助過我。我希望遷移對列使用不同的名稱,而不是我的類中的屬性。在內置類型中,我可以使用[Column("newName")]來執行此操作。但是,當我想要一個外鍵給另一個類時,這不起作用。在實體框架代碼優先遷移中選擇列的名稱

換句話說,這工作得很好:

[Column("NameInDB")] 
public string NameInCode { get; set; } 

但是,這並不在所有的工作:

[Column("Employee_Id")] 
public virtual Employee Owner { get; set; } 

在第二種情況下,遷移還是將列創建爲Owner_Id;它完全忽略了Column註釋。有沒有說它的Column註解只適用於內置類型?我找不到任何關於此的信息。

我知道這是可以使用[ForeignKey]註解要做到這一點,但如果我這樣做,我必須在我的代碼額外的屬性,我不想:

[ForeignKey("Employee_Id")] 
public virtual Employee Owner { get; set; } 

public int Employee_Id { get; set; } 

我不不想這樣做,因爲在這種情況下Employee_Id屬性是多餘的;我寧願只使用Owner屬性。有沒有解決這個問題的方法,或者[Column]似乎被忽略的一個很好的理由?

回答

0

public virtual Employee Owner { get; set; }未映射到DB,它不在數據庫中表示。爲了您的方便,它由Entity Framework自動填充。 Employee_Id - 這是存儲在數據庫中的內容。實體框架使用Employee_Id字段來創建Owner對象。因此,Emplyee_Id在這種情況下不是多餘的,它是強制性的,並且在DB中具有物理表示,但Owner字段是該類的邏輯部分,由Entity Framework管理,而不是DB中的列。說得通?

+0

這是有道理的;除了我所有的類關係只有父類實例作爲屬性,而不是int(ID)屬性。 Like,Employee有一個公司屬性,它是公司類的一個實例。我沒有任何Company_Id屬性; EF似乎將它映射到數據庫中的Company_Id。 – GendoIkari

相關問題