2014-01-21 4 views
2

Как я могу получить SQL-запрос, сгенерированный Context.SaveChanges(); команда. Мне нужно это, потому что у пользователя будет возможность создать скрипт для распространения данных, вместо того, чтобы вставлять его в локальную базу.Генерирование сценария Entity Framework

Спасибо.

UPDATE:

Я использую рамки сущности с помощью служб данных WCF.

+0

Если это одно или несколько запросов, вы можете увидеть (и скопировать) точные запросы, выполняемые в профиле SQL Server (www.codeproject.com/Articles/21371/SQL-Server-Profiler-Step-by- Шаг). Если вы имеете в виду генерировать сценарий «на лету», то я не уверен. – HockeyJ

+0

Я работаю с инфраструктурой сущностей, сгенерированный sql очень сложный для поддержания, я считаю. – Mortalzera

+0

Не могли бы вы предоставить им очень простой бит программного обеспечения, которое принимает данные (возможно, в CSV или, тем не менее, они хотят), и использует стандартный интерфейс. Я бы не хотел, чтобы люди запускали сложные SQL-скрипты непосредственно в БД. – HockeyJ

ответ

0

Мое решение: не использовать службы данных Wcf, которые по-прежнему неполны, если вам нужна безопасность и надежность, используйте Wcf Services, чтобы вы могли иметь структуру сущности в своей собственной степени. Службы данных Wcf недостаточно зрелые.

Для скриптов iam с использованием конкатенации строк с помощью stringbuilder.

1

Если вы используете EF6, вы можете использовать DbContext.Database.Log. Например, используя следующее, SQL будет выводиться на консоль по некоторым данным производительности:

Context.Database.Log = Console.WriteLine; 

Вы также можете выполнить перехват в случае, если вы хотите, чтобы остановить DbContext.SaveChanges от фактического сохранения изменений.

Вы можете найти информацию как о регистрации, так и о перехвате в this MSDN article.

Если вы используете предыдущие версии, можете проверить либо this, либо this.

+0

Это можно сделать, но я использую службы передачи данных WCF, что очень ограничено. На данный момент я создаю sql-скрипты с построителем строк ... да, это не лучшее решение. – Mortalzera

+0

И, кстати, создаваемые запросы очень сложны и почти невозможно поддерживать. – Mortalzera

Смежные вопросы