7

これを説明する方法がわかりませんが、ここに行きます...

EF 4.3 を使用してコード ファースト データ モデルを構築しました。クラスの 1 つである「Address」には、典型的な住所データ、通り、都市、州などが含まれます。モデル内の他のクラスには、「Address」クラスのインスタンスが含まれます。

問題。データはさまざまなビューを使用して収集/表示されます。住所フィールドが必要なビューもあれば、そうでないビューもあります。

それぞれが必要な検証属性を持つさまざまなビュー モデルを構築し、データ モデルとビュー モデルの間でデータをコピーすることはできますが、それは間違っているようです。

私は何が欠けていますか?これを行うには、よりスマートな方法が必要です。

助けてくれてありがとう、ジミー

4

1 に答える 1

6

まず、次の質問とその回答をお読みください。

この記事も役立ちます:

結論として、ほとんどのシナリオでは、分厚いドメイン モデル (DM)とそれに関連する軽量のプレゼンテーション モデル (PM)が役立つと思います。そのため、その太った DM の小さなチャンクだけを編集したい場合は、PM の 1 人が手を挙げます。

DM でこのクラスを想像してみてください。

namespace DomainModels
{
    public class Person
    {
         public int ID { get; set; }
         public string FirstName { get; set; }
         public string MiddleName { get; set; }
         public string LastName { get; set; }
         public DateTime? DoB { get; set; }
         public MyAddressDM Address { get; set; }
         public string Phone { get; set; }
         public IEnumerable<MyCarModel> Cars { get; set; }
         //etc.
     }
}

ここで、1 つのビューで Address と Phone のみを編集する必要があるとします。軽量 PM は次のようになります。

namesapce PresentationModels
{
     public PersonAddressPhone
     {
         public int ID { get; set;}
         public string FullName { get; set;}
         public string AddressSteet { get; set; }
         public string AddressCity { get; set; }
         public string AddressState { get; set; }
         public string AddressZipCode { get; set; }
         public string Phone { get; set; }
     }
}

別のビューでは、人の車を追加/削除する必要があります。

namesapce PresentationModels
{
     public PersonCars
     {
         public int ID { get; set;}
         public string FullName { get; set;}
         public IEnumerable<PMCar> Cars { get; set;}
     }
}

DO と PM の間のマッピングは、このパズルの黄金のピースです。必ずAutoMapperをご覧ください。

于 2012-07-03T01:14:27.763 に答える