我要获取IQueryable<>
执行存储过程时的结果。
这是一段运行良好的代码:
IQueryable<SomeEntitiy> someEntities;
var globbalyFilteredSomeEntities =
from se in m_Entities.SomeEntitiy
where
se.GlobalFilter == 1234
select se;
我可以用它来应用全局过滤器,然后在类似的东西中使用结果:
result = globbalyFilteredSomeEntities
.OrderByDescending(se => se.CreationDate)
.Skip(500)
.Take(10);
我想要做什么 - 在全局过滤器中使用一些存储过程。
我试过:
将存储过程添加到
m_Entities
,但它返回 IEnumerable<>
并立即执行 sp:var globbalyFilteredSomeEntities =
from se in m_Entities.SomeEntitiyStoredProcedure(1234);
使用 EFExtensions 库实现查询,但它是
IEnumerable<>
.如果我使用
AsQueryable()
和 OrderBy()
, Skip()
, Take()
之后 ToList()
执行该查询 -我得到异常(exception)
DataReader
已打开,我需要先关闭它(无法粘贴错误 - 它是俄语)。var globbalyFilteredSomeEntities =
m_Entities.CreateStoreCommand("exec SomeEntitiyStoredProcedure(1234)")
.Materialize<SomeEntitiy>();
//.AsQueryable()
//.OrderByDescending(se => se.CreationDate)
//.Skip(500)
//.Take(10)
//.ToList();
也只是跳过
.AsQueryable()
没有帮助 - 同样的异常(exception)。当我放
ToList()
查询执行,但是在没有
Skip()
的情况下执行查询太昂贵了, Take()
.
最佳答案
您不能做您想做的事情,原因与不能将存储过程放在 SELECT 查询的 FROM 子句中的原因相同——SQL 的构建不是为了支持这种操作。
你能把你想要的逻辑放在一个 View 而不是一个存储过程中吗?
关于.net - IQueryable<> 来自存储过程( Entity Framework ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2772295/