我正在使用LINQ在數據庫中插入記錄。我創建這些記錄並使用列表跟蹤它們。基於某種邏輯,我從列表中刪除一些記錄。 (我正在使用相同的DataContext對象)。問題submitChanges()在linq中插入不需要的記錄
當我想要在數據庫中插入記錄時,我在datacontext對象上執行相應的linq表的InsertOnSubmit(),然後執行SubmitChanges()。 LINQ插入從列表中刪除的記錄以及列表中存在的記錄。
例如:
//list to keep track of records to insert
List list
// add the records to list
list.add(some records)
//deleted last 2 records
list.remove()
//call InsertAllOnSubmit on the linq table passing the list object with records to insert
linqTable.InsertAllOnSubmit(list)
//call SubmitChanges on datacontext object
datacontext.SubmitChanges()
我這個MSDN文章Object States and Change-Tracking (LINQ to SQL)
你可以明確地請求插入跨使用InsertOnSubmit走過來 。或者, LINQ to SQL可以通過 推斷插入連接到 之一的已知對象,該對象必須是 已更新。例如,如果你一個 未跟蹤對象到 EntitySet的(TEntity)已或設置 的EntityRef(TEntity)已添加到未跟蹤 對象,則使未跟蹤對象 到達由在 圖表跟蹤對象的方法。在處理 SubmitChanges時,LINQ to SQL遍歷 跟蹤的對象並發現任何 未被跟蹤的可訪問持久對象 。這些對象是 候選人,用於插入 數據庫。
我想問題歸結爲這 - 如何將刪除的對象的狀態更改爲'Untracked'?
我從列表中刪除對象但嘗試出現異常(無法刪除未連接的實體)後嘗試刪除DeleteSubmit。
有人可以請我指出一個解決方案嗎?謝謝。
我想知道,如果我只能使用LINQ來實現這一點。 (我知道我可以使用存儲過程並只插入列表中的記錄。)
這不是它。列表中的remove()工作正常 - 我持有對要刪除的項目的引用。插入數據庫中的記錄大於列表中的記錄。 – hIpPy 2009-07-31 23:34:00