-1

データ層 (リポジトリ パターンと EF 4.0 を使用)、ビジネス層 (POCO と追加のロジック)、およびサービス層 (WCF を使用してクライアントに公開される) に分割されるアプリケーションを作成しています。

レコードをデータベースに保存するとき、既存のレコードを更新しているのか、新しいレコードを挿入しているのかを確認する必要があります。オブジェクトの有効期間が明示的に管理されるようにサービス層に、またはレコードを保存すると実行するアクションが暗黙的に決定されるようにデータ層に、その責任はどこにあるべきですか。

すべてのコメントを歓迎します - 私は自分自身を決めることができません!

4

2 に答える 2

0

ビジネスオブジェクトの保存に適用されるビジネスルールがある場合、責任はビジネスレイヤーにあります。そうでない場合、決定はデイレイヤーの責任である必要があります。

EFを使用していることは関係ありません。

于 2011-05-12T09:51:25.787 に答える
0

私の最初の考えは、これは Entity Framework 自体が把握できるはずのことだと思いますが、それについて 100% 確信があるわけではありません。

EFがあなたのためにそれをしない限り、私はこのロジックをリポジトリに入れます. myRepository.Save(myCustomer); のように Customer オブジェクトをリポジトリに渡します。

次に、Customer の Save メソッドで、顧客に ID が割り当てられているかどうかを確認するか、EF にその状態を追跡するように依頼して、Insert または Update を実行できます。このように、Save が呼び出される場所 (Web サービス、UI など) に関係なく、このロジックが処理されます。

于 2011-05-11T16:02:30.037 に答える