0

ビュー フィールドの値がエンティティ セット内で一意であることを検証するための最良の方法は何だろうと思っています。永続化レイヤーの更新前または更新後ですか? 関連する db フィールドには一意の制約があり、そのテーブルは EF モデルにマップされます。エンティティセットで一意の値を検証するには、次の 2 つの方法があります。

  1. 変更を db に保存する前(モデルの更新中、またはカスタム DataAnnotations でモデルを装飾することによって)
  2. 変更を db に保存した後(永続層によって生成された UpdateException をリポジトリまたはコントローラーで処理することにより)

最初の方法では、一意性を確認するためにデータベースにクエリを実行する必要があるためビューの更新にはデータベースの選択とデータベースの更新の両方が必要になります。

2 番目の方法では、追加の選択は必要ありませんが、エラーの種類と問題のあるフィールドを特定することは困難です。

私は方法 2 を好みますが、一意の制約が原因で挿入/更新が失敗したかどうかを判断する問題により、方法 1 を選択せざるを得なくなりました。

それとも別の方法がありますか?

4

1 に答える 1

0

一意の制約を確認するための優先および推奨される方法は、カスタム DataAnnotation 属性による UI からです。この方法では少しコードを書く必要がありますが、これは一意性制約をチェックするためにすべてのサイトが行っていることです。ただし、asp.net mvc 3 は、一意性制約をチェックするためにそのまま使用できる RemoteAttributeを提供します。最初の方法を使用することをお勧めします。これは、適切に編成されていれば、一部の小さな ajax 呼び出しがパフォーマンスに顕著な影響を与えないためです。

于 2011-05-04T11:22:18.623 に答える