Есть ли способ в Linq To SQL, чтобы получить базовый (сырой) SQL, происходящий в вызове SubmitChanges ()? - PullRequest
1 голос
/ 24 февраля 2010

Я работаю над системой управления контентом, которая вроде как встраивается в существующую базу данных, и в базе данных есть много таблиц. Будет промежуточная база данных, где мы будем вносить изменения и позволять пользователям «просматривать на месте». Затем любые изменения должны быть утверждены, и для их публикации мы подключимся к действующей версии той же базы данных (той же схемы) и воспроизведем сохраненные изменения.

Я нашел некоторый код (называемый Doddle Audit), который с некоторыми изменениями дает мне отличную информацию о том, что меняется. Я могу получить список всех столбцов, до и после, для обновлений, вставок и удалений. Но то, что я действительно хотел бы иметь, является базовым SQL, выполняемым SubmitChanges (). LinqToSql должен сгенерировать это, так почему я не могу его получить?

Я гуглил и смотрел на код, включающий SubmitChanges, наводя мышью на вещи, и я не могу его найти. Кто-нибудь знает способ получить это?

Ответы [ 4 ]

3 голосов
/ 25 февраля 2010

Используйте свойство DataContext.Log следующим образом:

using(DataContext dc = new DataContext()){
  StringBuilder sb = new StringBuilder();
  dc.Log = new StringWriter(sb);
}

Вы увидите сгенерированный запрос в режиме отладки.

2 голосов
/ 24 февраля 2010

Linq To Sql Profiler . Это делает это и многое другое.

1 голос
/ 24 февраля 2010

Вы можете попробовать это:

еЫп (context.GetCommand (запрос) .CommandText);

Надеюсь, это поможет.

Спасибо

Радж

0 голосов
/ 24 февраля 2010

Вы можете использовать SQL Server Profiler, но не так хорошо, как Linq To SQL Profiler, но бесплатно.

Чтобы получить SQL-оператор в строке, вы можете сделать что-то вроде этого:

using (var context = new MyDataContext()) 
{
   var query = from p in context.Persons
             select p;
   string sql = context.GetCommand(query).CommandText;


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...