2010-12-14 100 views
3

我們有一個EF4 EDMX,其中包含300個實體,這些實體在我們的核心產品套件(從數據庫導入的實體)中使用。在EF4中擴展Core Edmx,多個Edmx's

當我們獲得新客戶時,他們往往希望存儲額外的信息,並讓我們開發自定義流程,這些流程不在我們的業務領域並完全自定義。例如。我們與一家安全公司簽訂了一份合同,他們希望存儲有關其安全級別的信息,並制定在這些級別上採取行動的流程。

在每種情況下,我們都需要添加自定義表格和/或向現有實體添加自定義字段。我們有一種很好的方式來處理以前的技術,在這種技術中,核心類庫不會與自定義表格等混淆。我們只是從自定義類庫中的核心實體(等同於EF中的EntityObject)繼承而來,並根據需要添加了自定義。

同樣,我們不希望將這些自定義表格和屬性添加到我們的核心EDMX中。我們希望從核心EDMX中「繼承」一個新的自定義EDMX,在一個單獨的類庫中,我們可以添加自定義。繼承將使我們能夠在Core EDMX中再加上一點點。

我們使用T4模板在此基礎上的博客文章,產生了資源庫(我們沒有使用模型的第一種方法):

http://geekswithblogs.net/danemorgridge/archive/2010/06/28/entity-framework-repository-amp-unit-of-work-t4-template-on.aspx

我們可以擴展EDMX像我們要求?

我們想出了一個解決方案的hackish,核心實體的方法擴展其在單獨的EDMX返回一個自定義實體如下:

public static class CoreEntityExtensions 
    { 
    public static EntityConnection EntityConnection; 

    public static CustomUserEntity CustomUserDetails(this User coreUser) 
    { 
     ICustomUserEntityRepository customUserRepository = new CustomUserEntityRepository(EntityConnection); 
     return customUserRepository.All().SingleOrDefault(u => u.id == coreUser.id); 
    } 
    } 

這並不是雖然幾個明顯的原因理想。

任何幫助,非常感謝。

+0

你有沒有找到辦法做到這一點? – frabiacca 2011-03-19 00:56:21

回答

0

對我來說幫助不大,但NHibernate可以很容易地做到這一點。我們和你有相同的場景,NH允許我們在DLL中建模,沒有任何問題。

對不起,沒有一個真正的答案,只是建議考慮其他讀者的替代方案。