假设我有一个名为 Stock 的类,它有一个虚拟的 ICollection 价格,它是一组历史价格。
如果您获取股票并在股票具体化后查询价格,但应用像 mystock.Prices.OrderByDescending(px => px.Date).First() 这样的过滤器,EF 会在内部加载所有价格,然后应用过滤器使用过,因为价格可能是一个很大的集合,我真的希望看到 EF 只加载符合我的条件的价格。基本上在服务器端而不是客户端应用过滤。
是否有可能做到这一点?
Thanks
这是可能的,但这种方法只有在你可以假设的情况下才有效Prices
确实是一个EntityCollection
而不是其他一些恰好实现的类ICollection
。我不确定这在所有受支持的 EF 场景中是否成立。要使用的函数是EntityCollection
's CreateSourceQuery功能。
((EntityCollection<Price>)stock.Prices).CreateSourceQuery().OrderByDescending(price => price.Date).First();
如果这对您不起作用,另一种可能性可能是返回上下文,并从那里查询:
(from price in context.Prices
where price.StockId == stockId
orderby price.Date descending
select price).First();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)