2010-12-09 47 views
1

假設我正在創建一個公司應用程序。其中一個實體是員工,而人力資源部門擁有存儲在這裏的基本員工數據。然後,銷售團隊需要進入,他們的操作被放置在不同的組裝中。現在,即使是SalesPerson也是一名員工,所以從Employee實體繼承是合理的,但我不知道該怎麼做......?來自不同程序集的EF4實體之間的繼承

對我所知道的所有人使用幾個實體上下文可能是一個壞主意?我願意提供建議...... :)

回答

1

是的,你可以把你的POCO實體爲不同的組件,你可以在這些實體上構建繼承,但你仍然需要單一的ObjectContext和EDMX映射文件將涵蓋所有這些實體。你不能簡單地將你的繼承模型分成幾個映射文件。

IMO的唯一方法是複製EDMX文件不同的模塊中的一些映射。因此,例如,在您的案例中,HR模塊將具有帶有員工映射的EDMX,而銷售員模塊將具有其自己的EDMX,並具有相同的員工映射並繼承了銷售人員映射。

1

可以這樣做,是的,但不是默認的EF代碼生成。

你需要使用POCO的。

我們有我們的POCO在一個單獨的裝配也工作的很好。

閱讀POCO的EF4。您可以使用T4模板來生成類,然後將此代碼複製並粘貼到不同程序集中的單獨文件中(我不知道T4爲什麼不支持每個實體生成文件)。

從EF項目的POCO組件添加引用,和EF將使用基於約定映射使用POCO的。

我不是100%肯定這是否會與分裂組件的工作,雖然 - 你可能會遇到問題,如果該組件的命名空間是不同的。 (他們會是)。

值得一試。首先使用1個程序集,使用POCO映射,確保有效,然後拆分程序集並從那裏開始。

Godspeed。 :)

+0

T4模板可以爲每個實體生成文件 - 我沒有改變任何東西,它只是起作用。如果稍微修改模板(將路徑設置爲edmx),也可以將其放置在不同的程序集中,並且仍然能夠爲您生成代碼,但必須手動觸發代碼生成。 – 2010-12-10 08:32:24

+0

有趣 - 感謝提示! – RPM1984 2010-12-10 08:49:41