2016-09-12 79 views
1

實體框架中是否有一種方法將一些複雜類型用作實體的鍵並映射到現有數據庫?實體框架複雜類型屬性作爲鍵

讓說我有數據庫這樣的:

create table people (id int, name nvarchar(128)) 

,我想映射以下C#類結構此表:

class PersonId 
    { 
     public int Id { get; set; } 
    } 

    class Person 
    { 
     public PersonId Id { get; set; } 
     public string Name { get; set; } 
    } 

我怎麼能這樣做呢?

-Dmytro

+0

簡答:複雜類型屬性中不允許鍵,複雜類型不是鍵。更好的答案:參見下面的Ted,瞭解實際工作的內容。如果要爲所有實體類設置一組屬性,則可以對每個具體類型的表使用繼承。也許你可以在你的非工作解決方案旁邊更具體地瞭解你的底層設計問題。 – grek40

回答

0

什麼是有一個單獨的PersonId類,如果你只對財產的意義呢?這對我來說似乎是不好的做法。

也許你需要的只是一個複合鍵。要在EF中使用,您可以聲明您的班級,如下所示:

[Key, Column(Order = 0)] 
public int column1 { get; set; } 

[Key, Column(Order = 1)] 
public int column2 { get; set; } 
+0

我猜想的意圖是強類型ID以防止將蘋果與桔子進行比較,即使兩者都是通過數據庫中的整數編址 –