首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExecuteStoreQuery返回多行如何将其放入IList或List中

ExecuteStoreQuery返回多行如何将其放入IList或List中
EN

Stack Overflow用户
提问于 2012-01-26 15:15:42
回答 3查看 13K关注 0票数 4

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

代码语言:javascript
复制
Select * from someTable tbl where tbl.Id=51

然后,我使用ExecuteStoreQuery执行这个查询,如下所示

代码语言:javascript
复制
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);返回了多个我想放到列表中的行,我该怎么做呢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-26 16:44:05

创建要返回结果的类型的模型,如下所示

代码语言:javascript
复制
public class mymodel{

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

其中_key_value对应返回结果的列

执行查询ExecuteStoreQuery并返回结果AsQueryable

代码语言:javascript
复制
 container.ExecuteStoreQuery<mymodel>(query).AsQueryable().ToList();
票数 7
EN

Stack Overflow用户

发布于 2012-01-26 16:44:37

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

代码语言:javascript
复制
List<MyEntity> list = container.ExecuteStoreQuery<MyEntity>(query).ToList();

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

票数 4
EN

Stack Overflow用户

发布于 2012-01-26 15:49:11

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

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

Here is the MSDN documentation解释了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9014943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档