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;}
将成员更改为属性时,效果非常好。