我正在尝试对存储过程使用IQueryable
,编写存储过程的原因是检查查询中的多个条件。如果我的方向错误,请纠正我。
我认为应用IQueryable
会比IEnumerable
快得多,不要忘记我可以在其他实体上使用IQueryable
而没有任何问题。
控制器:
public ActionResult CrmBlogGroupType(int? page, bool? Name, bool? AuthorTitle, bool? Description, string search, int? PageSize, string type)
{
try
{
if (type==null)
{
type = "A";
}
IQueryable<Usp_getBlogSetPosts_Result> _objBlogSet = _dataLayer.GetBlogSet(type);
var Result = _objBlogSet.ToPagedList(page ?? 1, PageSize ?? 10);
return View(_objBlogSet);
}
数据层:
public IQueryable<Usp_getBlogSetPosts_Result> GetBlogSet(string type)
{
IQueryable<Usp_getBlogSetPosts_Result> Obj = _dbContext.Usp_getBlogSetPosts(type).AsQueryable();
return Obj;
}
Context.cs
:
public virtual ObjectResult<Usp_getBlogSetPosts_Result> Usp_getBlogSetPosts(string blogSetType)
{
var blogSetTypeParameter = blogSetType != null ?
new ObjectParameter("BlogSetType", blogSetType) :
new ObjectParameter("BlogSetType", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Usp_getBlogSetPosts_Result>("Usp_getBlogSetPosts", blogSetTypeParameter);
}
错误:
无法多次枚举查询结果
答案 0 :(得分:1)
这是因为存储过程输出结果集的类型不是IQueryable ..如果存储过程可以使用,则必须使用IEnumerable