0

私は、MVC を使用して大量の割り当ての問題を解決し、正しい方法で物事を行うためのさまざまなアプローチを検討してきました。

これまでのところ、私が最良だと思う 2 つのアプローチは以下のとおりです: (AutoMapper も調べました)

1: Value Injecter - これはうまく機能しているように見えますが、サードパーティのライブラリにも依存しています。

2: UpdateModel メソッドを使用して、ドメイン モデルで必要なプロパティのサブセットを公開するビュー モデル インターフェイスにバインドします。http://www.codethinked.com/easy-and-safe-model-binding-in-aspnet-mvc

上記のプラクティスのいずれかを使用して、アプリケーション全体をコーディングする前に (それぞれに 1 週​​間かけてどちらが好きかを判断する必要はありません)、これら 2 つの方法を実際に使用した経験があり、どちらをお勧めしますか?

4

2 に答える 2

0

このトピックについて私が行ったすべての読書からの一般的なコンセンサスは、(データベースから) エンティティまたはドメイン モデルからビュー モデルに移行してフォームに表示する場合は、AutoMapper などの自動化ツールを自由に使用してよいということです。あなたの好みのツールはそれを自動化することです。

ただし、入力モデルまたはフォーム モデル (自動モデル バインディングによって入力されたオブジェクト) からエンティティ モデルまたはドメイン モデルに戻る場合は、これを自動化しないでください。正しくナビゲートするのは滑りやすい坂道であり、自動化ツールが意図されていない/許可されていないフィールドにマッピングされる可能性があります。これについて私が読んだすべて(および私自身のさまざまな実装)は、これを手動/明示的に行うことがベストプラクティスであることを示唆しています。これは非常に簡単で、オブジェクト初期化子を使用すると非常に読みやすくなります。

var person = new Person()
{
    PersonId = model.PersonId,
    FirstName = model.FirstName,
    LastName= model.LastName
}

personService.UpdatePerson(person);

その線に沿った何か。

于 2013-02-01T22:23:19.670 に答える
0

文字列/整数プロパティに一致するテキスト フィールドしかない単純なシナリオでは、何でも同様に機能します。

ただし、モデル内のオブジェクト (DB 内の FK) に一致するビューモデルのプロパティがある場合は、もう少し複雑になります。個々の小道具について DB からデータを取得し、そのオブジェクトの一部のプロパティを ViewModel にマップする必要がある場合があります。 、 そのようなもの。

prodinner asp.net mvc デモ アプリケーションは、Mapper クラスで valueinjecter を使用します。このアプローチが説明されている PDF があります。ここからダウンロードできます: http://prodinner.codeplex.com/

于 2013-02-01T15:58:18.193 に答える