#entity-framework-4
#entity-framework-4
Вопрос:
Часто бывают случаи, когда я хотел бы посмотреть, какой SQL генерируется EF. Например, я запрашиваю объект, изменяю его и сохраняю обратно:
var context = new EntityModel();
var MyObj = context.FooTable.First(o => o.id = SearchId);
MyObj.Property = SomeValue;
context.SaveChanges();
Я получаю какую-то глупую ошибку, которую я мог бы устранить, если бы я мог видеть SQL. Я далек от эксперта по EF, и это помогло бы мне тоже научиться.
Обновление: Я думаю, что я действительно хочу знать: в объектах EF с автоматическим отслеживанием, как показано выше, как мне получить доступ к ObjectContext / ObjectQuery, чтобы использовать ToTraceString(), чтобы увидеть, что было выполнено в SaveChanges ()?
Комментарии:
1. Эта статья может быть вам интересна: msdn.microsoft.com/en-us/magazine/gg490349.aspx
2. С помощью SQL Express Profiler вы можете просто просмотреть SQL для определенных вещей. На вкладке События я устанавливаю SPStmtCompleted и больше ничего. Это фиксирует выбор, обновления и вставки из фреймворка.
Ответ №1:
Я использую бесплатный профилировщик SQL Express
Комментарии:
1. Я также использую это. Работает очень хорошо.
Ответ №2:
Это звучит как довольно простая задача, но это не потому, что ADO.NET команда как-то забыла включить такую базовую функциональность. Проверьте поставщика трассировки EF. Это то, что может помочь вам регистрировать команды SQL. В противном случае воспользуйтесь SQL Profiler и узнайте, как использовать фильтры при создании новой трассировки.
Ответ №3:
EF Profiler — отличный инструмент для этого, хотя и не бесплатный : (