我有一个返回动态查询的存储过程,例如,如果我将一些值传递给它的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);返回了多个我想放到列表中的行,我该怎么做呢
发布于 2012-01-26 16:44:05
创建要返回结果的类型的模型,如下所示
public class mymodel{
public int _key{get;set;}
public string _value{get;set;}
}其中_key和_value对应返回结果的列
执行查询ExecuteStoreQuery并返回结果AsQueryable
container.ExecuteStoreQuery<mymodel>(query).AsQueryable().ToList();发布于 2012-01-26 16:44:37
我不确定我是否理解了您的问题,但看起来您正在寻找ToList方法:
List<MyEntity> list = container.ExecuteStoreQuery<MyEntity>(query).ToList();更大的问题是代码中的object -如果你真的想要object类型,它将无法工作。您必须提供真实类型(映射实体、复杂类型或具有与结果集中列相同名称的公共属性的自定义类),否则EF将不会为您填充数据。
发布于 2012-01-26 15:49:11
可以在实体模型中导入存储过程。这将在您的ObjectContext上生成一个函数,您可以从代码中调用该函数。
当您映射SP时,您可以让EF将SP的结果映射到实体。如果没有匹配的实体,EF可以确定存储过程的结果列,并将其映射为复杂类型。
Here is the MSDN documentation解释了这一点。
https://stackoverflow.com/questions/9014943
复制相似问题