1

私は現在、自分のViewModelオブジェクトに自分のオブジェクトを設定するためのより良い方法を見つけるのに苦労していEntitiyます。次のWeb Apiコントローラーメソッドがあります。

[HttpGet]
public IEnumerable<ClientSearchViewModel> FindClients(string query)
{
    var clients = _clientService.SearchClient(query).ToList();
    var returnClients = new List<ClientSearchViewModel>();
    foreach (var client in clients)
    {
        returnClients.Add(new ClientSearchViewModel(client));
    }
    return returnClients;
}

そして、私はClientSearchViewModelコンストラクターでこれを行っています:

public ClientSearchViewModel(Client client)
{
    this.Id = client.Id;
    this.FirstName = client.PersonName.FirstName;
    this.LastName = client.PersonName.LastName;
}

返されたオブジェクトのリストを調べて新しいリストを作成する以外に別の方法はありViewModelますか?

4

2 に答える 2

1

これには、次のようなマッピング プラグインを使用することを強くお勧めします。

オートマッパー

また

ValueInjector

このようなプラグインを使用すると、内部またはデータ層で使用されているオブジェクトと外部オブジェクト (DTO/ViewModel) をマッピングできます。それらは、同じタイプの名前付きプロパティの自動マッピングなど、すぐに使用できる多くのことを処理しますが、よりカスタムなものが必要な場合に備えて、プロパティまたはタイプの特定のマッピングで多くの制御を可能にします.

この 2 つを簡単に比較するには、作成者自身の回答を聞くことに勝るものはありません: AutoMapper と ValueInjecter

個人的には、ValueInjector の方が全体的に制御しやすく、使いやすいと思いますが、同様の目標を達成するには少し多くのコードが必要になる可能性がある AutoMapper よりも読みやすく直感的ではないこともわかりました。そのため、あなたやあなたのチームがその構文を好み、概念をどれだけ簡単に把握できるか、そして実際に必要な力がどれほどあるかを選択します。

于 2013-08-08T15:14:09.520 に答える