LINQ查询是否可以在不同的LINQ提供程序之上?

时间:2008-12-04 23:37:28

标签: linq entity-framework linq-to-entities linq-to-objects

我目前正在考虑我的数据对象的存储库模式,其中多个IQueryable<>实例可以注册为数据源,但似乎不太容易让它运行。

使用LINQ到实体和LINQ To Objects运行简单的LINQ查询不起作用。你认为这通常是可能的吗?也许唯一的解决方案是编写指定的提供程序?

在我的存储库中,我在所有IQueryable实例上调用.Union<>(),然后最终使用LINQ查询生成的单个IQueryable。结果是完全忽略了一个IQueryable

2 个答案:

答案 0 :(得分:0)

好吧,我在列表上使用LINQ查询,收集了很多东西。我在SQL表上使用非常相似的查询。我从来没有遇到任何问题。我听说人们在LINQ对象上使用LINQ查询时遇到了一些问题,但我认为它们通常被认为是LINQ错误而不是LINQ to objects,LINQ to XML和LINQ to SQL工作方式的设计差异。在我安装VS 2008 SP1之前的几天里,我确实遇到了一些LINQ问题,但它们已经解决了。

只要您考虑返回的查询内容,它应该可以正常工作。

答案 1 :(得分:-2)

我绝对没有文档来支持这一点,但我确实记得在发布前几天有关Linq to SQL中内置优化的一些讨论,这些优化会尝试在Linq上执行操作时消除对数据库的多次调用到SQL IQueryable&lt;&gt;对象和Linq to Object IQueryable&lt;&gt;对象。这与IQueryable接口的整体架构相结合,让我觉得在不同的提供商上应该没有问题。但是,似乎可能的是,交互的能力可能基于提供者的具体实现。

我知道我已经对Linq to Object和Linq to XML集合的组合进行了操作而没有问题。