-2
我試圖實現下面的代碼,但我不斷收到以下錯誤。在ObjectStateManager中已存在具有相同密鑰的對象
ObjectStateManager中已存在具有相同鍵的對象。現有對象處於「未更改」狀態。如果對象處於添加狀態,則只能將其添加到ObjectStateManager。
Function Create(lkmeasure As LkMeasure, ByVal oForm As FormCollection) As ActionResult
Dim ObjectiveList As New List(Of String)
Try
If ModelState.IsValid Then
If Not DirectCast(Session("LoggedInUser"), SecurityUser).SecurityRole.RoleName.ToLower.Equals(cCommon.UserRole.Administrator.ToString.ToLower()) Then
lkmeasure.AgencyID = DirectCast(Session("LoggedInUser"), SecurityUser).AgencyID
End If
lkmeasure.StatusID = Convert.ToInt16(oForm("MeasureStatus").ToString())
If Not oForm("PerformanceObjectives") Is Nothing AndAlso oForm("PerformanceObjectives").Length > 0 Then
'If Convert.ToInt16(oForm("PerformanceObjectives").ToString()).Equals(0) Then
' lkmeasure.ObjectiveID = 0
'Else
'lkmeasure.ObjectiveID = Convert.ToInt16(oForm("PerformanceObjectives").ToString())
ObjectiveList = oForm("PerformanceObjectives").ToString().Split(",").ToList()
'End If
End If
lkmeasure.MeasureCreateDate = DateTime.Now
lkmeasure.MeasureUpdateDate = DateTime.Now
'Dim lkMeasureObjList As New List(Of LkMeasure)
For Each obj In ObjectiveList
Dim lkmeasureobj As New LkMeasure
lkmeasureobj = lkmeasure
lkmeasureobj.MeasureCreateDate = DateTime.Now
lkmeasureobj.MeasureUpdateDate = DateTime.Now
lkmeasureobj.ObjectiveID = Convert.ToInt16(obj)
db.LkMeasures.AddObject(lkmeasureobj)
db.SaveChanges()
lkmeasureobj = Nothing
Next
Return RedirectToAction("Index")
End If
Call CreateViewBag()
Return View(lkmeasure)
Catch ex As Exception
Return Nothing
End Try
End Function
我做了什麼對象,但仍然它說對象添加。
這意味着,在你的DbContext存在具有相同鍵另一個實體。哪個屬性是你的鑰匙? –
lkmeasure對象中有一個measureid,它是關鍵 – ConstantLearner
如何初始化MeasureID?數據庫中的身份字段是什麼?你在第一個循環中出現這個錯誤?第二... ? –