シンプルなフォームの3層Webアプリケーションがあります。 1つはレコードのリスト、1つは単一のレコードの編集などです。3層アプリケーションでEntity FrameworkのObjectContextをインスタンス化する必要があります
私はEDMXがあるDataLayerを持っています。 私のPOCOがあるApp Layerがあります。 私はすべてのコントローラクラス(MVCではなく!)を持つBusinessLayerを持っています 私はWeb UIがあるUIレイヤーを持っています。
EDMXには多くの多くのテーブルがあり、多くのナビゲーションプロパティがあります。 もちろん、コントローラの1つでデータを取得すると、 GetCustomerById(int id)、私はObjectのコンテキストを作成し、終了したら閉じます。
ただし、UIレイヤのナビゲーションプロパティにアクセスしようとすると、ObjectContext
は有効範囲外です。
ウェブレイヤーで(using MyContext = new MyContext()) {... }
を実行しますか?それは正しいとは思わない。 BizLayerのエンティティのデータから移入するPOCOの別のセットを作成する必要がありますか? ウェブフォームに入力したデータを保存するとどうなりますか?私はBizLayerコントローラを呼び出しますか? SaveCustomer()?
私の質問は、エンティティのナビゲーションプロパティに正しくアクセスできるようにするにはどうすればよいのですか。
注: EDMXはLazyLoadingに設定されています。
OMGこの質問は何度も繰り返されています:)私のasnwerをここで見てください、それは究極の真実や唯一の方法ではありませんが、私はこれまで多くの合意を得ています... http://stackoverflow.com/a/7474357/559144 –
ありがとうございます。しかしこれはMVCではありません。私の質問は、Web UIのEFに依存したくない場合、どのようにPOCOに対処し、どのように正しくアクセス/保存/編集するかです。 – John
私の答えですべて説明されている、それはまた、WebフォームやWindowsフォームやWPF、あなたがEF、NHibernateなどの依存関係からUIを分離するようにレイヤーに適用されます... –