ExecuteStoreQuery возвращает несколько строк, как я могу получить его в список или список - PullRequest
4 голосов
/ 26 января 2012

У меня есть хранимая процедура, которая возвращает динамический запрос, например, если я передаю какое-то значение параметру id, он возвращает мне динамический запрос, такой как

Select * from someTable tbl where tbl.Id=51

затем я выполняю этот запрос, используя ExecuteStoreQuery как

string query = container.CreateQuery<string>(
                    "SELECT VALUE DB.Store.GetQuery(@ID) FROM {1}",
                    new System.Data.Objects.ObjectParameter("ID", 51)
                ).First();

object lists = container.ExecuteStoreQuery<object>(query);

проблема в container.ExecuteStoreQuery<object>(query); возвращает несколько строк, которые я хочу получить в списке, как я могу это сделать

Ответы [ 3 ]

7 голосов
/ 26 января 2012

создать модель типа, который вы хотите вернуть результаты, как

public class mymodel{

public int _key{get;set;}
public string _value{get;set;}
}

, где _key и _value соответствуют столбцам возвращенного результата

выполнить запрос ExecuteStoreQuery и вернуть результат AsQueryable

 container.ExecuteStoreQuery<mymodel>(query).AsQueryable().ToList();
4 голосов
/ 26 января 2012

Я не уверен, что понимаю ваш вопрос, но похоже, что вы ищете ToList метод:

List<MyEntity> list = container.ExecuteStoreQuery<MyEntity>(query).ToList();

Чем больше проблем в вашем коде object - если вы действительно имеете в видуobject типа это не будет работать.Вы должны предоставить реальный тип (сопоставленный объект, сложный тип или пользовательский класс с открытыми свойствами, использующими те же имена, что и столбцы в наборе результатов), в противном случае EF не будет заполнять данные за вас.

1 голос
/ 26 января 2012

Хранимые процедуры могут быть импортированы в вашу модель сущности.Это приведет к функции на вашем ObjectContext, которую вы сможете вызывать из своего кода.

Когда вы отображаете SP, вы можете позволить EF отобразить результат вашего SP на сущность.Если у вас нет соответствующей сущности, EF может определить результирующие столбцы для вашей хранимой процедуры и сопоставить ее со сложным типом.

Вот документация MSDN , которая объясняет это.

...