Как отладить оператор linq to sql InsertOnSubmit?

2

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

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

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

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

db.SubmitChanges(ConflictMode.FailOnFirstConflict);

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

  • 0
    Что такое исключение и трассировка стека?
  • 0
    Здесь нет исключений. За исключением того, что моя запись отсутствует в базе данных, так что остальная часть моей программы borfs.
Теги:
debugging
linq-to-sql

4 ответа

0
Лучший ответ

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

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

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

  • 0
    Я вижу только все виды мусора, некоторые входящие звонки от других запросов, но никогда не этот запрос. Кажется, что submitchanges не представляет ничего ..
2

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

db.Log = Console.Out;
  • 0
    Извиняюсь, если я сейчас звучу отсталым, но я в библиотечном проекте, консоли нет.
  • 0
    db.Log просто хочет TextWriter - вы можете создать файл для входа в систему.
Показать ещё 3 комментария
0

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

0

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню