2013-01-07 69 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()。當第一個對象被發現時,迭代應該停止。