私はこのService Layer --> Repository --> Entity Framework (Code-First) w/POCO objects
アプローチを使用していますが、エンティティの更新に苦労しています。
AutoMapper を使用してドメイン オブジェクトをビュー モデルにマップしていますが、データを取得するのに適していますが、その変更をデータベースに戻すにはどうすればよいですか?
純粋な POCO オブジェクトを使用すると、変更追跡のようなものはないと想定されるため、自分で処理するしか選択肢がないことがわかります。ビュー モデルがドメイン オブジェクトとまったく同じプロパティを持っていることを確認しますか? ビュー モデルのフィールドを 1 つまたは 2 つ変更するとどうなりますか? ドメイン オブジェクトの残りのフィールドは、データベースでデフォルト値で上書きされませんか?
そうは言っても、最善のアプローチは何ですか?
ありがとう!
編集
だから私がつまずいているのはこれです、例えば単純なものを見てみましょうCustomer
:
1)には、servicesメソッドを呼び出すサービス がありますController
。CustomerService
GetCustmoerByID
2)Service
を呼び出してCustomerRepository
、オブジェクトを取得しCustomer
ます。
3) Controller
AutoMapper を使用して を にマッピングしCustomer
ますViewModel
。
4)Controller
モデルを に渡しView
ます。すべてが素晴らしいです!
ここで、ビューで顧客にいくつかの変更を加え、それをコントローラーにポストして、データベースへの変更を永続化します。
この時点で、オブジェクトは切り離されていると思います。Customer
では、モデルはオブジェクトとまったく同じプロパティを持つべきでしょうか? また、表示したくないアイテムごとに非表示のフィールドを作成して、それらを永続化できるようにする必要がありますか?
オブジェクトをデータベースに保存する方法を教えてください。ビュー/モデルがオブジェクトのいくつかのフィールドのみを扱う場合はどうなりますか?