私の SQL データベースでは、2 つのレコードを同じ番号で追加することはできません。以前に使用した番号でレコードを作成しようとしたり、以前に使用した番号を使用するようにレコードを編集しようとすると、それが許可されず、下請番号フィールドの横にアスタリスクが付いた編集/作成ページに戻ります。これにルール違反を追加して、適切なメッセージを表示できるようにしたいと考えています。これを追加してみました:
if (db.subcontracts.Count(s => s.subcontract_no == subcontract_no) > 0)
yield return new RuleViolation("Subcontract number already exists", "subcontract_no");
これを書いているとき、私は Create メソッドしか考えていませんでした。ここでの問題は、subcontract_no が変更されていない場合でも、レコードを編集するたびに違反が見つかることです。したがって、subcontract_no が変更された場合は、レコードの作成時と編集時に違反を見つける必要があると思います。ただし、「自分自身を見つけて」ルール違反を作成することはできません。これどうやってするの?