現在作成しているアプリケーションは、ストアドプロシージャと手作りのクラスモデルを使用してデータベースオブジェクトを表現しています。一部の人々はEntity Frameworkの使用を提案しており、私はプロジェクトにそれほど遠くないので、それに切り替えることを検討しています。私の問題は、EFを主張する人々が悪い面ではなく、良い面だけを教えてくれると感じていることです:)
私の主な懸念は次のとおりです。
- DataAnnotationsを使用してクライアント側の検証が必要であり、とにかくクライアント側のモデルを作成する必要があるように思えるので、EFがそのようなコーディング時間を節約するかどうかはわかりません
- ネットワークを経由するときにクラスをできる限り小さくしたいのですが、EFを使用すると、多くの場合、不要な追加データが含まれることがあります
- 複数のデータベースにまたがる複雑なデータベースレイヤーがあり、EFがこれを処理できるかどうかはわかりません。ユーザー、ステータスコード、タイプなどを含む共通データベースと、アプリケーションの異なるインスタンス用のメインデータベースの複数のインスタンスがあります。SELECTクエリは、データベースのすべてのインスタンスに対してクエリを実行できますが、ユーザーは、現在作業しているデータベース内のオブジェクトのみを変更できます。アプリケーションをリロードせずにデータベースを切り替えることができます。
- オブジェクトモードは非常に複雑で、多くの場合、多くの結合が関係します
EFの引数は次のとおりです。
- 並行性。各保存の前にレコードが更新されたかどうかを確認するためにチェックをコーディングする必要はありません。
- コード生成。EFは私のために部分クラスモデルとPOCOを生成できますが、検証といくつかのカスタム解析メソッドのためにクライアント側モデルを作成する必要があると思うので、これは本当に多くの時間を節約するだろうと確信しています。
- すべてのデータベースオブジェクトに対してCRUDストアドプロシージャを作成する必要がないため、開発の速度
現在のアーキテクチャは、パラメーター化されたストアドプロシージャを介してデータベース呼び出しを処理するWPFサービス、WCFサービスとWPFクライアントとの間でやり取りされるPOCOオブジェクト、および検証のためにPOCOをクラスモデルに変換するWPFデスクトップクライアントで構成されますデータバインディング。
私の質問は、EFはこれに適していますか?EFについて私が知らない落とし穴はありますか?