唯一键约束检查实体框架

时间:2013-01-07 16:52:35

标签: entity-framework

我的SQL Server中有一个基于两列(AbsoluteCounter,TimeMfrAudit)的唯一键约束。如果我尝试通过Entity Framework添加对象列表,我如何检查我的一个对象是否会违反此约束而不抛出会使我的整个context.SaveChanges()失败的异常?我在这里寻找最佳实践。

由于

1 个答案:

答案 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()。当找到第一个对象时,迭代应该停止。