2012-02-10 7 views
2

シナリオ:約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ページにこの縮小エンティティを使用します。

私は個人的に、それを行うためのよりよい方法が必要であると感じています。任意のコメント?

答えて

0

はい、保存するだけでオブジェクトをロードしてから、automapperを使用してプロパティをオブジェクトにコピーし直すか、手動でEFクラスに設定します。

EFはどの小道具が変更されたか知り、変更されたプロパティに対してのみupdateaを送信します。

+0

私はAutoMapperをチェックしましたが、少し躊躇しています。それは広く使われている、安全で優れた実践ですか?私が推測するより良い方法があるはずです。 – Blaise

+0

オートマッパ岩石が広く使用されています。単にプロパティ値をコピーします。似たようなことをする独自のコードテンプレートや他のコード生成ツールを書くことも、手作業でコピーを書くこともできます。 –

+0

アダム、私はあなたと多くの他の投稿がそれを示唆した後AutoMapperをチェックした。エンティティをビューモデルにマッピングするときに効果的です。 (大クラスから小クラスへ)。しかし、ViewModelを保存するとき、逆マッピングは不可能なようです。ビューモデルにはいくつかのプロパティしか含まれていません。他の多くのプロパティはそのまま維持する必要があります。そしてそれらのうちのいくつかは複雑なエンティティにもあります。AutoMapperは小さなクラスから複雑で複雑なクラスにマップできますか? 私たちがそれを理解できるかどうかわかりませんが、私たちは躊躇のないオートマッパを採用します。 – Blaise

0

私は実際には、関連する話題に戻って少し質問を投稿しました。question 1と具体的にはquestion 2です。

これまでの質問2では1つの答えが100%満足していませんでしたが、専門家はビューモデルを使用することをお勧めします。 1つは、生成されたUPDATEステートメントによってデータベース内で "その他の" 90のプロパティが上書きされないように手動で保存することを避けることです。

+0

あなたの投稿が本当に関連していないように見えます。しかし、情報に感謝します。 – Blaise

+0

@ブレイズ:申し訳ありません! HTTPPostでサーバーに戻ってくるデータのシナリオでビューモデルを使用する利点について私が(そしてまだまだ)混乱していることを指摘したいだけでした。上にリンクされた私の質問2に尋ねると、私は、ドメインモデルに戻ってマッピングしなければならないという明白な欠点を補うビューモデルを好んで説明することを望んでいました。あなたと同じですが、私はAutomapperへのさらなる情報なしでジャンプするのが快適ではありませんでした。私はちょうどあなたの質問を見続けるので、私はあなたが得る答えから恩恵を受けることができます。 – ralfonso

関連する問題