EF - выполнить SQL-запрос / хранимую процедуру, которая имеет динамически сгенерированные поля - PullRequest
1 голос
/ 14 июня 2011

Я использую код EF в моем приложении. Мне нужно выполнить запрос, который запускает отчет и возвращает набор результатов с динамически сгенерированными полями. Поля в наборе результатов могут отличаться в зависимости от условия. Можно ли вернуть набор результатов с использованием подхода «сначала код», как, например, в DataSet, или есть другой способ добиться этого?

Спасибо.

1 Ответ

2 голосов
/ 14 июня 2011

(не проверено) Вы можете попытаться определить тип данных, который будет иметь свойства для всех возможных столбцов, которые может вернуть ваш запрос. Это должен быть плоский тип без вложенных объектов, а свойства должны иметь те же имена, что и столбцы в наборе результатов. Тогда вы можете использовать

var data = context.Database.SqlQuery<YourType>("Your SQL Query or SP call");

Если вы хотите DataSet только с возвращенными столбцами, вы должны использовать стандарт ADO.NET SqlDataAdapter или SqlConnection / SqlCommand (или версию, связанную с вашей базой данных). EF не любит собственные запросы, которые не возвращают фиксированный набор столбцов.

...