Как отладить оператор linq to sql InsertOnSubmit? - PullRequest
2 голосов
/ 02 ноября 2009

Следующий код работает для работы.

db.DBUsers.InsertOnSubmit(new DBUser
    {
        AllTheStuff = valuesBeyondYourWildestDreams
    }
);
db.SubmitChanges();

Я предполагаю, что что-то изменилось в базе данных, и отправка не удалась, потому что отображение отключено.
Поскольку визуализатор linq не работает для меня (бонусные баллы за исправление), я хочу найти другой способ узнать, что именно не так, и почему отправка происходит молча.

Обновление
Я пытался использовать

db.SubmitChanges(ConflictMode.FailOnFirstConflict);

, чтобы получить исключение, но кажется, что отправка работает. За исключением того, что в базе данных нет фактически новой сущности.

Ответы [ 4 ]

2 голосов
/ 02 ноября 2009

Для начала я бы сделал:

db.Log = Console.Out;
0 голосов
/ 02 ноября 2009

Вы также можете использовать LINQPad - скопировать туда свой код LINQ, сослаться на базу данных и поместить дампы для эффективной отладки LINQ.

0 голосов
/ 02 ноября 2009

Это очень хорошо работает при отладке linq для sql для нас.

Отправляет информацию журнала в окно вывода.

http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11

0 голосов
/ 02 ноября 2009

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

Для базовой отладки LINQ я обнаружил, что SP: StmtCompleted (в соответствии с хранимыми процедурами) и SQL: StmtCompleted (в TSQL) достаточно, чтобы показать вам, что такое SQL LINQ пытаясь бежать.

Если вы обнаружите, что получаете много нежелательных команд, вы можете отфильтровать их. Например, я отфильтровываю все, что исходит из баз данных msdb и master .

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