Как просмотреть сгенерированный SQL из Entity Framework?

Как говорится в заголовке, как мне посмотреть SQL, сгенерированный Entity Framework из моего кода? Я столкнулся с ошибкой, когда EF сбой, потому что поле генерируется базой данных (поле DateTime), и я подумал, что я задал ему вопрос о том, что хранилище генерирует его через StoreGeneratedPattern, но он все еще сбой, поэтому я хотел бы узнать, что именно он пытается подтолкнуть к базе данных.

P.S. Я использую EF только около часа... Переключение с L2S.

Ответ 1

Поскольку у вас нет Sql Profiler, лучшим выбором будет LINQPad. Вы можете использовать существующую сборку.

Нажмите Add connectionUse a typed data context from your own assemblyEntity framework и выберите свою DLL.

Вы можете писать запросы непосредственно против вашей модели (или скопировать-вставить из своего кода). Выберите вкладку SQL 'в окне запроса, чтобы просмотреть сгенерированный код SQL.

Ответ 2

Вы можете использовать Entity Framework Profiler (EFProf). Это не бесплатно, но есть 30-дневная пробная версия. Он делает гораздо более аккуратный материал, помимо того, что вы показываете инструкции SQL.

Ответ 3

Как правило, вы всегда должны использовать SQL Profiler, чтобы видеть инструкции SQL, которые были отправлены EF в вашу базу данных.

Кроме того, я думаю, вы не поняли, что такое StoreGeneratedPattern. Если вы посмотрите на возможные значения внутри модели, вы увидите, что она имеет идентификатор, означающий, что значение будет генерироваться (по базе данных) при вставке строки и не изменится иначе. Другие параметры Вычислены, в которых указано, что значение будет генерироваться при вставках и обновлениях, и Нет, что по умолчанию.
Таким образом, EF не будет генерировать это поле DateTime на лету для вас, вам нужно вручную создать его, а затем обновить модель из базы данных, чтобы EF создавал соответствующие метаданные для работы с ней во время выполнения.

Ответ 4

Бесплатный AnjLab Sql Profiler будет работать, если реальный SQL Profiler недоступен, потому что вы используете SQL Server Express: http://anjlab.com/en/projects/opensource/sqlprofiler. Это не совсем так хорошо, как реальная вещь, но она делает работу достаточно хорошо.

Ответ 5

Одним из решений было бы захват сетевого трафика и просмотр данных на этом уровне. Microsoft Network Monitor хорошо справляется с этим.

Конечно, это работает только в том случае, если вы используете отдельный сервер БД, а соединение не зашифровано.