2010-06-23 104 views
4

我正在處理大量數據一次插入SQL數據庫的應用程序。我使用LINQ to SQL,並將其作爲我的插入操作:LINQ to SQL context.SubmitChanges - 如何獲取錯誤詳細信息?

foreach(var obj in objects) { context.InsertOnSubmit(obj); } context.SubmitChanges();

下面是問題:如果我得到一個異常(例如,DuplicateKeyException),我沒有CLUE什麼對象導致了問題。我得到的唯一信息是至少有一個對象包含的鍵值與數據庫中的其他鍵相同。

是否有可能提取更多關於什麼對象引起衝突的信息?

當然,我可以打電話給每一個InsertOnSubmit後的SubmitChanges,但數據我插入的量,這是非常緩慢的。

任何人有任何提示給我? 謝謝!

+0

Hallgeir:你得到你要找的答案嗎?如果是這樣,你能接受嗎?如果不是,你能澄清你還在尋找什麼嗎?通常情況下,你提供的信息越多,他可以幫你的可能性就越大。 – MaasSql 2010-07-01 00:41:25

回答

1

朋友,我並不想成爲一個聰明的亞歷克,也許我反正成功,但我的主要建議是你放棄LINQ在數據負載使用。 SSIS爲ETL工作生成簡單,高效且易於維護的代碼。原因在於,它旨在做到這一點。

其次,你不指定被拋出異常的類型,也不如果異常,當呈現給您包含一個非空內部異常。這是我看的第一個地方。

好運。

+0

感謝您的提示...我會研究這個! – Hallgeir 2010-07-02 12:30:39

0

我正在使用Linq to sql進行批量插入。這很慢,它不是爲此設計的,但它恰好適合我的場景。

我使用ctx.Log跟蹤誤差。上有http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers

很好的例子還有,我使用ctx.Log得到進度條,你可能會發現有用的。更多詳細信息可在我的博客文章 http://epandzo.wordpress.com/2011/01/02/linq-to-sql-ctx-submitchanges-progress/

和計算器問題 LINQ to SQL SubmitChangess() progress