LINQ to SQL context.SubmitChanges - Как получить подробности об ошибке? - PullRequest
4 голосов
/ 23 июня 2010

Я работаю над приложением, в которое сразу много данных вставляется в базу данных SQL. Я использую LINQ to SQL, и у меня есть что-то вроде этой операции вставки:

foreach (var obj в объектах) { context.InsertOnSubmit (OBJ); } context.SubmitChanges ();

Вот проблема: если я получаю исключение (например, DuplicateKeyException), я не знаю, какой объект вызвал проблему. Единственная информация, которую я получаю, это то, что по крайней мере один из объектов содержит значения ключей, которые идентичны другим ключам в базе данных.

Можно ли получить дополнительную информацию о том, какие объекты вызвали конфликт?

Конечно, я мог бы вызывать SubmitChanges после каждого и каждого InsertOnSubmit, но с количеством вставляемых данных это невероятно медленно.

У кого-нибудь есть советы для меня? Спасибо!

Ответы [ 2 ]

1 голос
/ 27 июня 2010

Друг, я не пытаюсь быть умным Алеком, и, возможно, я все равно преуспеваю, но мое главное предложение - отказаться от linq для использования при загрузке данных.SSIS создает простой, эффективный и простой в обслуживании код для работы с ETL.Причина в том, что она была разработана именно для этого.

Во-вторых, вы не указываете, какой тип исключения выдается, и если это исключение при представлении вам содержит ненулевое внутреннее исключение.Это первое место, куда я бы посмотрел.

Удачи.

0 голосов
/ 02 января 2011

Я использую 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/

и вопросе stackoverflow LINQ to SQL SubmitChangess () progress

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...