我正在爲LINQ to SQL CUD編寫一個通用類。我LINQ to SQL定義對象身份的成員不能更改
「通用插入
Public Shared Sub Add(Of T As Class)(ByVal entity As T)
Using db As New APIUDataContext()
db.GetTable(Of T)().InsertOnSubmit(entity)
db.SubmitChanges()
End Using
的genric插入工作良好。
'通用更新
Public Shared Sub Update(Of T As Class)(ByVal oldEntity As T, ByVal newEntity As T)
Dim db As New DemoDataContext()
db.GetTable(Of T)().Attach(newEntity, oldEntity)
db.SubmitChanges()
End Sub
' 使用通用的更新
Dim oldEntity As New TestAuthor
oldEntity.Id = 4
oldEntity.FirstName = "James"
Dim newEntity As New TestAuthor
newEntity.FirstName = TextBox1.Text
newEntity.LastName = TextBox2.Text
GenericCUD.Update(oldEntity, newEntity)
錯誤從通用更新消息。
「TestAuthor」類型的對象的成員'Id'的值已更改。 定義對象身份的成員無法更改。 考慮添加一個具有新身份的新對象,並刪除現有的對象。
我需要修改通用更新?謝謝。
它給出了這樣的錯誤: 行未找到或更改。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。 異常詳細信息:System.Data.Linq.ChangeConflictException:找不到或更改了行。 – 2009-11-29 10:49:59