Как настроить SQL-код, сгенерированный Linq, и получить тот же тип объекта в результате выполнения - PullRequest
0 голосов
/ 03 декабря 2011

Я хочу использовать ((ObjectQuery)IQueryable).ToTraceString() для получения и настройки кода SQL, который будет выполняться LINQ, затем запустить его с помощью SqlCommand.ExecuteReader, а затем передать обратно в Linq, чтобы получить те же получившиеся объекты, как если бы он не был изменен.

Я настраиваю его таким образом, чтобы он возвращал ту же структуру (те же столбцы), например, я могу просто добавить комментарии, чтобы иметь возможность легко фильтровать запросы в SQL Server Profiler.

Эти результаты легко использовать для таких столбцов, как Count или 1-4, без сопоставления с одним и тем же результирующим типом Linq.

Но когда у меня есть запрос, который возвращает сложный тип, сгенерированный выражением Linq, я бы хотел прокормитьSqlDataReader возвращает обратно в Entity Framework, чтобы получить тот же тип результата Linq, который использовался для генерации этого запроса?

Я ищу какой-либо способ настройки базового запроса Linq, он не обязательно должен быть через SqlCommand.

1 Ответ

1 голос
/ 03 декабря 2011

Вы можете использовать SqlQuery<T> для написания собственных запросов в Синтаксис Entity SQL , но, хотя он имеет синтаксис для вставки комментариев в строку запроса, комментарии непокажите в профилировщике SQL.

Таким образом, если вставка комментариев - это единственное, что вам нужно, вам нужно будет найти что-то еще, например настраиваемое ведение журнала .Для других «твиков» может подойти SqlQuery.

...