2013-01-07 55 views
3

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

感谢

回答

1

这将是违反唯一键约束的所有对象:

var violatingObjects = listOfObjectsToAdd 
    .Where(o => context.Objects.Any(oInDb => 
     oInDb.AbsoluteCounter == o.AbsoluteCounter && 
     oInDb.TimeMfrAudit == o.TimeMfrAudit)) 
    .ToList(); 

这是每个对象一个EXISTS数据库查询在列表中。如果您只想知道违反约束条件的第一个对象,请使用FirstOrDefault()而不是ToList()。如果您只想知道是否有任何违规物品使用Any()而不是ToList()。当第一个对象被发现时,迭代应该停止。