有没有办法告诉nHibernate在更新一个具有重复值的行时唯一受到限制的行列上的重复值。NHibernate的唯一约束删除重复
例如(OtherId和动物是复合地唯一约束)
Id | OtherId | Animal
------------
1 | 1 | Dog
2 | 1 | Cat
3 | 1 | Bear
4 | 2 | Dog
更新ID 3至狗,应导致此
Id | OtherId | Animal
1 | 1 | NULL
2 | 1 | Cat
3 | 1 | Dog
4 | 2 | Dog
编辑:
我能够通过在我的表格中创建唯一索引来解决我的问题
CREATE UNIQUE INDEX [Id_OtherId_Animal_Index]
ON [dbo].[Animals] (OtherId, Animal)
WHERE Animal IS NOT NULL;
这样,我防止插入重复(1,狗),仍然允许(2,狗)。这也将允许插入多个(1,NULL)。
接下来,基于Frédéric的建议,我编辑了我的服务层,检查BEFORE插入是否重复。如果它会,那么NULL的动物列将被唯一约束。
感谢你为这个,我其实就是想什么,如果出了什么更新两列,将空字符串或null,则不会触发这违反唯一约束太多,但我与你的#1和方法去处理这在服务层中,现在听起来更像商业逻辑。 – kotsumu