シナリオ:約100プロパティを持つ使用Entity Frameworkのは、巨大なクラスの唯一のいくつかのプロパティを更新するために
巨大Patient
クラス/エンティティ。しかし、Webページでは、更新する連絡先情報(約10のプロパティのみ)を表示する必要があります。 Do/ViewModelを作成してそれを行うことはできますか?
以前はデータを読み取るためにViewModelしか使用していませんでした。データを更新するために使用できますか?
EDIT: さて、私がこれまでに発見したものを要約します。
- を使用して、ViewModel(更新するプロパティのみを含む)を元の大きいEntityClassに戻します。 例は:
[HttpPost]
public virtual ActionResult Edit(EditUser user)
{
var domain = uow.Users.Create(); domain.Id = user.Id; uow.Users.Update(domain); AutoMapper.Mapper.Map<EditUser, Example.Core.Data.User>(user, domain); uow.Save(); return View(); }
- のみ必要な特性を含むEDMXモデルにおけるPatientSummaryと呼ばれる別のエンティティを作成します。手動でEDMXデザイナーでマッピングを行います。次に、患者の連絡先の更新Webページにこの縮小エンティティを使用します。
私は個人的に、それを行うためのよりよい方法が必要であると感じています。任意のコメント?
私はAutoMapperをチェックしましたが、少し躊躇しています。それは広く使われている、安全で優れた実践ですか?私が推測するより良い方法があるはずです。 – Blaise
オートマッパ岩石が広く使用されています。単にプロパティ値をコピーします。似たようなことをする独自のコードテンプレートや他のコード生成ツールを書くことも、手作業でコピーを書くこともできます。 –
アダム、私はあなたと多くの他の投稿がそれを示唆した後AutoMapperをチェックした。エンティティをビューモデルにマッピングするときに効果的です。 (大クラスから小クラスへ)。しかし、ViewModelを保存するとき、逆マッピングは不可能なようです。ビューモデルにはいくつかのプロパティしか含まれていません。他の多くのプロパティはそのまま維持する必要があります。そしてそれらのうちのいくつかは複雑なエンティティにもあります。AutoMapperは小さなクラスから複雑で複雑なクラスにマップできますか? 私たちがそれを理解できるかどうかわかりませんが、私たちは躊躇のないオートマッパを採用します。 – Blaise