我的SQL Server中有一个基于两列(AbsoluteCounter,TimeMfrAudit)的唯一键约束。如果我尝试通过Entity Framework添加对象列表,我如何检查我的一个对象是否会违反此约束而不抛出会使我的整个context.SaveChanges()失败的异常?我在这里寻找最佳实践。
由于
答案 0 :(得分:1)
这些都是违反唯一键约束的所有对象:
var violatingObjects = listOfObjectsToAdd
.Where(o => context.Objects.Any(oInDb =>
oInDb.AbsoluteCounter == o.AbsoluteCounter &&
oInDb.TimeMfrAudit == o.TimeMfrAudit))
.ToList();
列表中每个对象只有一个EXISTS
数据库查询。如果您只想知道违反约束的第一个对象,请使用FirstOrDefault()
而不是ToList()
。如果您只想知道是否存在任何违规对象,请使用Any()
而不是ToList()
。当找到第一个对象时,迭代应该停止。