Получить командный текст SQL и параметры из EntityFramework ObjectQuery - PullRequest
1 голос
/ 01 апреля 2011

У меня есть несколько запросов, которые EF не может поддерживать: пространственные, индексные и т. Д. И т. Д. Большинство данных, однако, дружественно к EF, и я могу использовать поставщика linq.

Пример: У меня есть Person,Таблицы PersonAddress и Address.По адресу у меня есть пространственный индекс, который должен использоваться для определения области поиска.Исходя из этого, я хочу отфильтровать, например, по Person.BirthDate.Я уже реализовал это в T-SQL, но только с фиксированными параметрами.

Вместо этого я хочу объединить пространственные запросы и запросы структуры сущностей, и для этого мне нужно получить текст и параметры команды SQL из ObjectQuery.Когда я их объединю, это будет легко.К сожалению, я могу получить только текст команды, используя ObjectQuery.ToTraceString ().

Я использую linqpad и вижу, что он может получать как параметры, так и текст, поэтому это должно быть возможно.

Каков наилучший способ достичь этого?

1 Ответ

0 голосов
/ 01 апреля 2011

LinqPad, скорее всего, использует нечто похожее на все инструменты трассировки и профилирования.Проверьте трассирующая оболочка для образца.Это просто оболочка для провайдера, генерирующего запросы SQL, но на уровне оболочки вы абсолютно не знаете тип выполняемого запроса.Это просто DbCommand.Единственный способ изменить SQL, когда у вас есть контекст выполненного запроса linq, - это custom provider .

...