2012-10-05 68 views
1
關閉跟蹤更改數據庫

的DataContext拋出異常「對象追蹤沒有爲當前的DataContext實例啓用」當我嘗試添加新的實體,如下分貝。插入新的實體,與LinqToSql

db.Posts.InsertOnSubmit(new entity); 

啓用跟蹤更改對我來說不是一個解決方案,因爲當我有很多插入操作時,它的速度太慢。

這種情況下的解決方案是什麼?

回答

0

通常啓用和禁用對象簡單地追蹤導線向上或忽略該變化跟蹤事件處理程序。如果您試圖插入如此多的項目,以至於在嘗試連接這些事件時速度太慢,則會遇到更大的問題。

記住,LINQ to SQL中會發出要添加的每個記錄單獨的數據庫請求。這裏的網絡瓶頸肯定會成爲一個更大的問題,而不僅僅是連接更改跟蹤事件。 LINQ到SQl不是批量插入的最佳選擇。考慮使用SSIS /批量複製進行這種操作。

1

你不能吃你的蛋糕,也吃它。

根據您的數據庫結構,你可以考慮使用兩個datacontexts。 一個啓用了變更跟蹤功能,一個禁用。

但是,你仍然有創紀錄的每一個INSERT語句。這就是linq-2-sql的運作方式,在1-2秒內沒有解決方案。您必須查看SqlBulkCopy類的bulkinsertions。