3


1

Entity Frameworkの永続性の無知の欠如について読む私はよくhttp://blogs.msdn.com/jkowalski/archive/2008/09/09/persistence-ignorance-poco-adapter-for-entity-framework-v1を見つけます。 aspx [POCOアダプタ] 問題は、誰かが本番環境でそれを使用するのか、それがどのように行われるのか、そして落とし穴は何ですか?

私はアプリケーション設計のための2つの代替案を考えます:ビジネスロジックでそのアダプタでPOCOを使用してプレゼンテーション層にそれらを使用させるか、またはEFエンティティとDTOの間で変換するサービス層を作成させます:(1)EFエンティティ<→アダプタ<→ POCOビジネスオブジェクト<→プレゼンテーションまたは(2)EFエンティティ<→サービスレイヤ<→ DTO <→プレゼンテーション。 最初のアプローチはもっときれいに見えますが、私はPOCO Adapterが標準的な解決策ではないことに少し躊躇していて、現時点では明らかにされていないいくつかの欠点を含むかもしれません。

3 Answer


7


EFPocoAdapterはEntity Framework 4.0に代わって非推奨になりました。 http://blogs.msdn.com/adonet/archive/2009/05/20/entity-framework-4-0-beta-1-bits-now-available-in-the-vs-2010-and-net -4-beta-1.aspx [beta release]は1週間も前に発表されていないので、MSDNの購読者であれば既にBeta 1をダウンロードできます。

EFPocoAdapterを使用する理由はもうありません。 私はまたあなたにADO.NET Entity Framework http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experienceを読むことをお勧めしますEF 4.0の全機能の一覧については、.aspx [Design Team blog]を読んでください。

また、このブログ記事を見てください: POCO Entity Frameworkの:パート1 - 経験

EFPocoAdapterでの私の経験に関しては、POCO、遅延ロード、およびn層シナリオのサポートに満足していました。 Entity Frameworkは、T4テンプレートを他のものの中に提供することによってこれをさらに発展させています。 私が持っていた他の問題は シリアル化機能の問題 JavaScriptSerializerは循環参照を処理しませんがDataContractSerializerはクラス/メンバーを必要としますT4テンプレート以前は自動生成クラスでは不可能だった属性。

EFPocoAdapterは常に、コミュニティからフィードバックを得てEF 4.0用の機能セットを開発するための一種のステージングプラットフォームであることを意図していました。 Jaroslawと何度かやり取りしたにもかかわらず、私は自分の要求を満たすことができました。 それとサポートは非​​常に暗い(フォーラムやスタックオーバーフローの少数の人々)。


4


あなたは AutoMapperを使用することをお勧めします。 その後、必要に応じてEFエンティティ、POCOエンティティ、DTOを書くことができます。 2セットのエンティティは少しオーバーヘッドがあるように思われます、しかし、あなたが永続性の無知である必要があるとき、これはAutoMapperで最も簡単な方法のようです。


0


このスレッドに、私はEntity Framework v4をC#POCO Generatorを使って生成されたPOCOモデルと一緒に(約6ヶ月間)使用していることを追加したいと思います。

ただし、WCFサービスでそれらを使用する場合は 新しいキャッチがあります。したがって、WCFを介してそれらを公開することを検討している場合は、賢明な概念実証とオブジェクトグラフの複雑さが、直列化、ステートレスな使用法などの問題を引き起こすかどうかを確かめてください。