2012-03-21 179 views
0

example simplified class structureADO .NET實體框架繼承建模

大家好

我havinga問題與實體框架,基本上你可以在上圖中看到類一是具有兩個類的抽象類從中繼承B & C

每個類別都有一個不是要求的ID,但它是數據庫設計的關係結構的一部分。

我試圖使用EF工具VS 2008我的數據庫在繼承一個模型,然後模型來生成。我得到的模型生成的很好,但模型圖中仍然存在外鍵。我刪除這些並用正確的繼承來替換它們,我也將實體集名稱設置爲相同。

這是我的問題開始的地方。

這些類似乎沒有正常工作的協會不工作?

是否刪除了FK是否正確,還是應該將其留在原位並使用繼承?

我需要的類Ç繼承一個在我的業務層。

該模型似乎不正確,我會在任何幫助使這個模型工作的幫助。

+0

它是每個表或每個類型的繼承?數據庫第一個場景是? – 2012-03-21 13:32:06

+1

「id」字段是表中的主鍵,還是** ** **中的PK ** ** ** **中的FK? – CodingGorilla 2012-03-21 13:34:10

+0

@DenisAgarev我相信每桌類型,因爲我有一個表A,B&C – Deviland 2012-03-21 13:34:21

回答

1

我認爲問題是你有一個單獨的PK和FK與你的表相關。 EF期望子表在表格中具有PK和FK的單個「id」列。

這裏是我有一個數據庫的實例的快照(這是由EF生成,但你明白我說什麼):

Example

你會看到這裏Jobs是基地,其他兩個來自Jobs。您會看到Jobs中的Id字段是PK,那麼在其他兩個表中,Id字段既是PK也是FK,返回到Jobs

就像我說的,這個模型是由EF(模型優先)生成的,但我非常確定這是EF如何看待事物,所以我不認爲你的數據庫將適合EF的繼承結構。

2

您不應該有(單獨的)FK到A的PK。

繼承期望B.Id是PK,FK是A.Id.