2011-05-13 60 views
0

作爲示例,我有一個對象Person,Person由男人和女人繼承。 Person包含男人和女人共享的屬性,而男人和女人包含特定的屬性。用Code First存儲對象,作爲類和子類相關

我想要做的就是使用Entity Framework 4.1 Code First將它們存儲在數據庫中。所以我做了三個模型對象

class Person { 
    int Id { get; set; } 
    string Name { get; set; } 
    string Weight { get; set; } 
    public virtual Woman Woman { get; set; } 
    public int WomanID { get; set; } 
    public virtual Man Man { get; set; } 
    public int ManID { get; set; } 
} 

class Woman { 
    int Id { get; set; } 
    bool IsPregnant { get; set; } 
} 

class Man { 
    int Id { get; set; } 
    bool ThinksWithDick { get; set; } 

} 

所以我人 - >男人/女人有1到0..1的關係。我不知道如何用Code First強制執行此操作。我讀過1對1關係(here),但那不是我要找的。

也許這完全是錯誤的方法,但我相信別人碰到了同樣的事情。無需手動應用數據庫中的約束就可以完成。

回答

1

從人身上刪除ManId和WomanId以及男人和女人。 將PersonId和Person添加到女人和男人類。

class Person { 
    int Id { get; set; } 
    string Name { get; set; } 
    string Weight { get; set; } 
} 

class Woman { 
    int Id { get; set; } 
    bool IsPregnant { get; set; } 
    int PersonId {get; set;} 
    public virtual Person {get; set;} 
} 

class Man { 
    int Id { get; set; } 
    bool ThinksWithDick { get; set; } 
    int PersonId {get; set;} 
    public virtual Person {get; set;} 
} 
+1

在你的情況下,無論是男人還是女人都可以從Person類派生出來。 – hazimdikenli 2011-05-13 09:33:48

+0

我嘗試了繼承方式。所以女人/男人繼承人。在數據庫中,EF在Person表中添加一個「Discriminator」字段,其中包含類名「Woman」或「Man」。這似乎恰好符合我的需要。感謝名單! – Saab 2011-05-13 09:48:02

相關問題