0
我有這個類:參照完整性約束違規發生mvc4
Public Class Customer
Public Property CustomerID As Integer
Public Property CustomerName As String
Public Property OrdersList As ICollection(Of Order)
End Class
Public Class Order
Public Property OrderID As Integer
Public Property CustomerID As Integer
Public Property OrderTotal As Decimal
Public Property OrderDetails As ICollection(Of OrderDetail)
Public Property OrderCustomer As Customer
End Class
Public Class OrderDetail
Public Property OrderDetailID As Integer
Public Property OrderID As Integer
Public Property ProductID As Integer
Public Property Price As Decimal
Public Property Quantity As Decimal
Public Property LineTotal As Decimal
Public Property OrderDetailOrder As Order
Public Property OrderDetailProduct As Product
End Class
Public Class Product
Public Property ProductID As Integer
Public Property ProductName As String
Public Property ProductPrice As Decimal
Public Property OrderDetails As ICollection(Of OrderDetail)
End Class
,這是PUT方法
Function PutOrder(ByVal id As Integer, ByVal order As Order) As HttpResponseMessage
If ModelState.IsValid And id = order.OrderID Then
db.Entry(order).State = EntityState.Modified
Try
db.SaveChanges()
Catch ex As DbUpdateConcurrencyException
Return Request.CreateResponse(HttpStatusCode.NotFound)
End Try
Return Request.CreateResponse(HttpStatusCode.OK)
Else
Return Request.CreateResponse(HttpStatusCode.BadRequest)
End If
End Function
但是當執行:db.Entry(順序).STATE = EntityState .Modified 我有這個錯誤
參照完整性約束衝突發生了:屬性值定義關係中的主體和相關對象之間的參照約束不一致。
感謝ü所有
總是我的訂單沒有配備像那些屬性:order.OrderCustomer =沒什麼,OrderDetail.OrderDetailProduct =沒有什麼是正確的? – Senator 2013-02-17 17:02:55
@Senator:集合怎麼樣,比如'order.OrderDetails'?如果此集合中的'OrderDetails'沒有設置正確的'OrderID',那麼您可能也會得到這個異常,但我不確定。 – Slauma 2013-02-17 17:12:09
我嘗試這樣:'對於每個objOrderDetails在order.OrderDetails objOrderDetails.OrderID = order.OrderID 接着 db.Entry(順序).STATE = EntityState.Modified'但我有此錯誤:**與一個對象ObjectStateManager中已存在相同的密鑰。 ObjectStateManager無法使用相同的密鑰跟蹤多個對象**,抱歉格式不對 – Senator 2013-02-17 17:21:04