Как мне увидеть, какие сохраненные файлы SQL Entitity Framework генерируются?

#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 — отличный инструмент для этого, хотя и не бесплатный : (