【发布时间】:2017-02-28 21:11:05
【问题描述】:
有没有办法告诉 nHibernate 删除行列上的重复值,当使用重复值更新行时,该列受到唯一约束。
例如(OtherId 和 Animal 是复合唯一约束)
Id | OtherId | Animal
------------
1 | 1 | Dog
2 | 1 | Cat
3 | 1 | Bear
4 | 2 | Dog
将 ID 3 更新为 Dog,应该会导致这种情况
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, Dog) 并仍然允许 (2, Dog)。这也将允许插入多个 (1, NULL)。
接下来,根据下面 Frédéric 的建议,我编辑了我的服务层以在插入之前检查它是否会重复。如果是,则 NULL 将对其进行唯一约束的动物列。
【问题讨论】:
标签: sql .net nhibernate