私は自分のソリューションを設計する良い方法を見つけようとしています。私は以下のテクノロジ、Asp.Net Webforms、およびEntity Framework 4.1を使用する予定であることを知っています。私のEFモデルは、既存のデータベースに基づいています。私はコンテキストとエンティティを構築するためにEF DbContextジェネレータを使用する予定です。そして、これは私のために物事が少しトリッキーになるポイントです。WebFormsでEntity Frameworkを使用する適切な抽象概念は何ですか
私はDALからビジネスロジックを分離することを可能にし、より良いテスト容易性を提供し、懸念を適切に分離したいと考えています。現在私のソリューションにはWeb、Core、Dataという3つのプロジェクトがあります。私は依存関係をウェブにすることを望みます - >コア< - ウェブとデータの間に依存関係のないデータ。これは、データ(私のedmxがある場所)ではなく、コアに実際に存在するエンティティを必要とします。現在、私の考えは、Entities.ttファイルをCoreに移動し、InputFileをData内のedmxを指し示すように変更して、Coreのエンティティを生成することです。しかし、私はContextをどうすればいいのか分かりません。それはEFに大きく依存しているので、単にそれをコアに移したいだけではありません。 IEntities.Context.ttを作成し、Coreにドロップすることを考えました。インターフェイスがDbSetsとDbContextを作成しない場合、私の心配は機能の損失です。
2つの考えは、1)CoreでSystem.Data.Entityを参照し、2)DbSetを使用せず、ICollection(またはそのような汎用コンテナ)と置き換えてラップしますDbContextを自分のインターフェイスのオブジェクトとして使用します。
洞察力は非常に高く評価されます。ありがとうございました。
コンテキストとContext.ttジェネレータをデータプロジェクトに残すことができないのはなぜですか?コアに移動する必要はありません。コアはもちろん、データライブラリのコンテキストを参照する必要があります。それはあなたが抱えている問題であり、あなたが望まないものですか?そうであれば、EFをコアから抽象化しなければならないため、抽象的な「リポジトリ」と「作業単位」のパターンはこれを行う通常の方法です=キーワード検索する)。しかし、Coreがデータを参照する場合は、はるかに簡単になります。 – Slauma
私はCoreがDataに全く依存するべきではなく、DataとWebの両方が使用できる基本的なPOCOオブジェクトを提供するべきだと考えていました。これは、Webとデータを完全に切り離し、Dataの潜在的な可能性をより簡単に(つまり、私たちがnHibernateまたは別のORMに移行したい場合)可能にします。 –