生成されたオブジェクトをEntity Frameworkからビジネスオブジェクトとして使用することは悪い習慣ですか?レイヤー間でやりとりするEntity Frameworkオブジェクトの周りにセカンダリラッパーを書く方が良いでしょうか?.NET Entity Framework
たとえば、私の生成したEntity FrameworkオブジェクトEFPersonの1つを受け入れるPOCO Personを作成して、POCO Personオブジェクトを初期化しますか?
生成されたオブジェクトをEntity Frameworkからビジネスオブジェクトとして使用することは悪い習慣ですか?レイヤー間でやりとりするEntity Frameworkオブジェクトの周りにセカンダリラッパーを書く方が良いでしょうか?.NET Entity Framework
たとえば、私の生成したEntity FrameworkオブジェクトEFPersonの1つを受け入れるPOCO Personを作成して、POCO Personオブジェクトを初期化しますか?
私はなぜそれが悪い練習になるか分からない。あなたのEFオブジェクトをどのように使用するかによって、扱いにくいかもしれません。
私は、EFオブジェクトにBIZロジックを実装するための部分クラスを用意しています。インタフェースを使用して抽象化レベルを提供しています。
例えば、
public partial class Client : IClient
{
void DoSomething();
}
// then an EF generated object ...
public partial class Client
{
// ...
}
私の唯一の問題は、オブジェクトのシリアライズです。私の場合、WCFを使用してJSONにシリアル化します。中間のDTOを離散クラス/オブジェクトとして作成したり、匿名型として作成したりすることはできません。
あなたがシリアライズに興味があるなら、ここで私の他の質問を見てい:一部の人々は、ビジネス・オブジェクトにEntity Frameworkのクラスをラップする傾向があるがSerialize Entity Framework objects into JSON
を、私は通常それをしないことをお勧め。
これはビジネスロジックとデータアクセスの分離を改善することを理解していますが、これは通常、すべてのエンティティタイプを複製するオーバーヘッドの価値はないと思います。
ORマッパーの目的は何ですか?手作業でオブジェクトをデータベースにマッピングする複雑なデータアクセスレイヤーを必要とせずにビジネスオブジェクトを永続化することです。 Entity Frameworkクラスをラップすると、利便性の半分しか使用できません。
最後に、データアクセスとビジネスロジックの結合は、部分クラスではそれほど厳しくありません。以前は、主要な問題なしにわずか数時間で、Entity FrameworkからLINQへの約30のエンティティを含むプロジェクトを変更しました。
市長...常に問題を引き起こしています... –
:Dそれを修正する...;) –
EFオブジェクトのシリアル化に問題がある場合は、POCOでラップするのが最善ではありませんか?将来的にはWCFを通じてBizロジックを公開したいと思うかもしれないからです。 – Nate