2010-06-23 67 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

相关问题