0
重複鍵異常下面是簡單的代碼使用EF在EF
var isNewEntity = entity.Id == 0;
if (isNewEntity)
{
_unitOfWork.Context.DbTripReportDefinitionSectionSet.Add(entity);
}
else
{
ObjectStateEntry stateEntry;
_unitOfWork.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry);
if (stateEntry == null)
{
_unitOfWork.Context.DbTripReportDefinitionSectionSet.Attach(entity);
}
_unitOfWork.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
}
_unitOfWork.Save();
return entity.Id;
問題是我有一個例外
「使用相同的密鑰對象已存在新的實體添加到SQL Server在ObjectStateManager中。 的ObjectStateManager不能用相同的 重點跟蹤多個對象「。已存在但未追蹤的實體。
所以_unitOfWork.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry);
返回FALSE,該代碼_unitOfWork.Context.DbTripReportDefinitionSectionSet.Attach(entity);
拋出異常。我猜是因爲已經附加的導航屬性。我如何附加這些實體沒有導航屬性?或者,如何解決以另一種方式,這些問題呢?