我正在开发一个将大量数据立即插入SQL数据库的应用程序。我使用LINQ to SQL,并在插入操作中添加了以下内容:
foreach(对象中的var obj)
{
context.InsertOnSubmit(obj);
}
context.SubmitChanges();
问题出在这里:如果出现异常(例如DuplicateKeyException),则我不知道是什么对象导致了问题。我得到的唯一信息是,至少有一个对象包含与数据库中某些其他键相同的键值。
是否可以提取有关导致冲突的对象的更多信息?
当然,我可以在每个InsertOnSubmit之后调用SubmitChanges,但是由于要插入的数据量很大,所以速度非常慢。
有人对我有提示吗?
谢谢!
最佳答案
朋友,我并不是想成为一个聪明的专家,也许无论如何我都会成功,但是我的主要建议是您放弃将linq用于数据加载。 SSIS为ETL工作生成简单,高效且易于维护的代码。原因是,它被设计用来做到这一点。
其次,您不指定要抛出哪种类型的异常,也不提供给您的异常是否包含非null内部异常。那是我要看的第一个地方。
祝好运。