2015-06-12 3 views
0

Я пытаюсь создать универсальный метод для получения данных из SQL Server с помощью одной хранимой процедуры, но она не возвращает данных:Entity Framework ExecuteStoreQuery с анонимным типом

public static IEnumerable<T> Select<T>(string SQL) 
{ 
    string spName = "exec spGetData @SQL"; 
    var parametros = new object[]{ 
           new SqlParameter("@SQL", SQL) 
           }; 
    IEnumerable<T> result; 
    using (DBContext db = new DBContext()) 
    { 
    result = from a in db.ObjectContext.ExecuteStoreQuery<T>(spName, parametros).ToList() select a; 
    } 
    return result; 
} 

Кто-то может мне помочь?

+0

Почему бы вам не добавить хранимую процедуру, как «функция импорт» и использовать его напрямую, вместо использования 'exec spGetData', используя' ExecuteStoreQuery'? –

+0

Я не понял, что вы сказали о «функции импорта», я использую хранимые процедуры, потому что я получу некоторые записи из базы данных, и я хочу поместить их в типизированный объект из моей модели. Я думаю, что функции SQL Server возвращают только один результат из некоторой операции, а не много записей. Не могли бы вы привести несколько примеров вашего решения? –

+0

Какая у вас проблема? –

ответ

2

EF обрабатывает хранимые процедуры и создает результирующие наборы объектов из списка функций сохраненного результата процесса, который выбирается для использования в контексте EF.

шаги

  1. В конструкторе выберите «Обновить модель от Database`.
  2. Когда вы попадаете на страницу, которая позволяет добавлять таблицы/представления/хранимые процедуры, выберите хранимую процедуру процента.
  3. После завершения работы мастера EF будет содержать сохраненный процесс в Model Browser, который можно отобразить, щелкнув правой кнопкой мыши по поверхности дизайна EF и выбрав Model Browser.
  4. В Model Browser найдите хранимую процедуру в папке Model Store ->Stored Procedures/Functions. Убедитесь, что отображение хорошее, посмотрев на Model ->Function Imports и что результирующий объект можно найти в папке Complex Types.

Оттуда вы можете вызывать сохраненный процесс из контекста EF и он возвращает список результатов, полученных в коде.


я дать более подробное объяснение на своем блоге статью и предоставить подсказки и работу обходных некоторые проблемы со сложными неудачами сущностей: Entity Framework Stored Procedure Instructions

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