重複値を持つ行を更新するときに一意に制約される重複値を削除するようにnHibernateに指示する方法はありますか?例えばNHibernateの一意制約重複の場合の除外
が
Id | OtherId | Animal
------------
1 | 1 | Dog
2 | 1 | Cat
3 | 1 | Bear
4 | 2 | Dog
更新番号3イヌに(OtherId及び動物が複合的制約一意である)、この
Id | OtherId | Animal
1 | 1 | NULL
2 | 1 | Cat
3 | 1 | Dog
4 | 2 | Dog
EDITをもたらすはずである:
私ができましたテーブルにユニークなインデックスを作成して問題を解決する
CREATE UNIQUE INDEX [Id_OtherId_Animal_Index]
ON [dbo].[Animals] (OtherId, Animal)
WHERE Animal IS NOT NULL;
このようにして、重複(1、犬)の挿入を防ぎ、引き続き(2、犬)を許可します。これにより、複数(1、NULL)を挿入することもできます。
次に、フレデリックの提案に基づいて、重複している場合はBEFORE挿入を確認するために私のサービス層を編集しました。そうであれば、その動物列は一意に制約されます。
ありがとうございました。実際に何かが空の文字列またはnullに両方の列を更新すると、それがユニークな制約違反をトリガしないと考えたのですが、#1アプローチとハンドルこれはサービス層では、ビジネスロジックのように聞こえるようになりました。 – kotsumu