为了账号安全,请及时绑定邮箱和手机立即绑定

Entity Framwork 存储过程

Entity Framwork 存储过程

慕侠2389804 2018-11-21 22:09:24
问题:如果我使用存储过程创建一个IQueryable<实体类型/复杂类型>对象,但我需要对存储过程执行结果进行过滤。因为某些原因,我不希望向存储过程传递参数。虽然我可以用URI:http://localhost:54321/Wcf/ZJ.svc/QueryTest?$filter = FacilityName eq 'PC'这种格式对结果进行过滤,但是我对这种方法存在顾虑 var context = new Entities(); var query = context.存储过程().AsQueryable(); query对象是否是先返回所有存储过程结果,然后再对结果集进行过滤? comment:存储过程 select * from T_ZJ_Facility 我用EntitySql进行测试的结果 public IQueryable<T_ZJ_Facility> QueryTest() {var context = new Entities(); var query = context.T_ZJ_Facility.AsQueryable(); return query.AsQueryable();} 
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

我跟踪了数据库执行记录,exec 存储过程名

实体类应该是不可以映射sql语句为表达式树,而表达式树是可以映射成sql语句。使用存储过程不能很好和IQueryable的接口进行完美兼容,特别在存储过程返回的数据量比较大时,而有效数据较少时。

当然可以将参数传递给存储过程来解决这个问题。


查看完整回答
反对 回复 2018-11-25
?
月关宝盒

TA贡献1772条经验 获得超5个赞

SELECT 哪些字段是由实体类以及映射关系的定义决定的。

如果查询结果没有你想要的字段,可以在实体类中添加相应的属性。


查看完整回答
反对 回复 2018-11-25
  • 2 回答
  • 0 关注
  • 519 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信