3
我在我的SQL Server中有一個基於兩列(AbsoluteCounter,TimeMfrAudit)的唯一鍵約束。如果我嘗試通過實體框架添加對象列表,如何檢查我的一個對象是否會違反此約束而不拋出會使我的整個context.aveChanges()失敗的異常?我正在尋找這裏的最佳做法。唯一鍵約束簽入實體框架
感謝
我在我的SQL Server中有一個基於兩列(AbsoluteCounter,TimeMfrAudit)的唯一鍵約束。如果我嘗試通過實體框架添加對象列表,如何檢查我的一個對象是否會違反此約束而不拋出會使我的整個context.aveChanges()失敗的異常?我正在尋找這裏的最佳做法。唯一鍵約束簽入實體框架
感謝
這將是違反唯一鍵約束的所有對象:
var violatingObjects = listOfObjectsToAdd
.Where(o => context.Objects.Any(oInDb =>
oInDb.AbsoluteCounter == o.AbsoluteCounter &&
oInDb.TimeMfrAudit == o.TimeMfrAudit))
.ToList();
這是每個對象一個EXISTS
數據庫查詢在列表中。如果您只想知道違反約束條件的第一個對象,請使用FirstOrDefault()
而不是ToList()
。如果您只想知道是否有任何違規物品使用Any()
而不是ToList()
。當第一個對象被發現時,迭代應該停止。