Entity framework ExecuteStoreQuery返回多行如何将其放入IList或列表

Entity framework ExecuteStoreQuery返回多行如何将其放入IList或列表,entity-framework,entity-framework-4,c#-3.0,Entity Framework,Entity Framework 4,C# 3.0,我有一个返回动态查询的存储过程,例如,如果我将一些值传递给它的id参数,它将返回一个动态查询,如 Select * from someTable tbl where tbl.Id=51 然后我使用ExecuteStoreQuerylike执行这个查询 string query = container.CreateQuery<string>( "SELECT VALUE DB.Store.GetQuery(@ID) FROM {1}",

我有一个返回动态查询的存储过程,例如,如果我将一些值传递给它的
id
参数,它将返回一个动态查询,如

Select * from someTable tbl where tbl.Id=51
然后我使用
ExecuteStoreQuery
like执行这个查询

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);
string query=container.CreateQuery(
“从{1}中选择值DB.Store.GetQuery(@ID)”,
新系统。数据。对象。对象参数(“ID”,51)
).First();
对象列表=container.ExecuteStoreQuery(查询);

问题是
container.ExecuteStoreQuery(查询)
返回我想要进入列表的多行,如何才能做到这一点

存储过程可以导入到实体模型中。这将在
ObjectContext
上生成一个函数,您可以从代码中调用该函数

映射SP时,可以让EF将SP的结果映射到实体。如果没有匹配的实体,EF可以确定存储过程的结果列,并将其映射为复杂类型


这就解释了这一点。

创建一个您想要返回结果的类型的模型,如

public class mymodel{

public int _key{get;set;}
public string _value{get;set;}
}
其中,
\u键
\u值
对应于返回结果的列

执行查询
ExecuteStoreQuery
并返回结果
AsQueryable

 container.ExecuteStoreQuery<mymodel>(query).AsQueryable().ToList();
container.ExecuteStoreQuery(查询).AsQueryable().ToList();

我不确定我是否理解您的问题,但看起来您正在寻找
列表
方法:

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

更大的问题是代码中的
object
——如果你真的是指
object
类型,它将不起作用。您必须提供一个实类型(映射实体、复杂类型或具有公共属性的自定义类,使用与结果集中的列相同的名称)否则EF将不会为您填充数据。

tnx用于答复我知道SP可以映射到实体,但我仅使用SP生成查询,然后我使用
上下文执行查询。ExecuteStoreQuery
回答很好。我有一个只包含成员变量(例如:
public int key;
)的类,但它不起作用,但当我通过添加
{get;set;}
将成员更改为属性时,效果非常好。