2010-12-14 7 views
3

コア製品スイート(データベースからインポートされたエンティティ)で使用される約300個のエンティティを含むEF4 EDMXがあります。コアEdmxを拡張する、EF4に複数のEdmxを追加

私たちは新しいクライアントを獲得するときに、余分な情報を保存したいと思っており、私たちにビジネスドメインの外で完全なカスタムプロセスを開発させたいと思っています。例えば。私たちはセキュリティ会社と契約を結び、セキュリティレベルに関する情報を保存し、これらのレベルで動作するプロセスを持つことを望んでいました。

いずれの場合も、カスタムテーブルを追加したり、既存のエンティティにカスタムフィールドを追加したりする必要があります。コアクラスライブラリがカスタムテーブルなどで捨てられていなかった以前の技術でこれを行う良い方法がありました。カスタムクラスライブラリのコアエンティティ(EFのEntityObjectに準拠)から継承し、必要に応じてカスタマイズを追加しました。

同様に、これらのカスタムテーブルと属性をコアEDMXに追加することは望ましくありません。カスタムEDMXの中核となるEDMXから基本的に「継承」したいと考えています。新しいカスタムEDMXは、カスタム化を追加できる別のクラスライブラリです。継承により、コアEDMXでできることすべてを、さらに少しでも行うことができます。

私たちは(私たちは、モデル最初のアプローチを使用していない)、このブログの記事に基づいて、当社のリポジトリを生成するために、T4テンプレートを使用している:私たちが必要のよう

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

我々はEDMXを延長することはできますか?

我々は1つのハックソリューションは、以下のように別々の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

答えて

0

私は思っているほど助けになりませんが、NHibernateはそれをかなり簡単に行うことができます。私たちはあなたとNHと同じシナリオを持っています.NHを介して問題なくNHをモデル化することができます。

申し訳ありませんが、本当に答えはありませんが、これを読んでいる誰かのための代替案を検討するだけのアドバイスです。

関連する問題