Возможны ли запросы LINQ над различными поставщиками LINQ? - PullRequest
0 голосов
/ 05 декабря 2008

В настоящее время я думаю о шаблоне хранилища для моих объектов данных, где несколько экземпляров IQueryable<> могут быть зарегистрированы в качестве источников данных, но, кажется, его не так легко запустить.

Выполнение простого запроса LINQ с LINQ для объектов и LINQ для объектов не работает. Как вы думаете, это вообще возможно? Может быть, единственное решение - написать указанного провайдера?

В моем репозитории я вызвал .Union<>() для всех своих экземпляров IQueryable, а затем, наконец, использовал LINQ для запроса к полученному единственному IQueryable. В результате один IQueryable был полностью проигнорирован.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2008

У меня нет абсолютно никакой документации, подтверждающей это, но я вспоминаю некоторые дискуссии в дни перед выпуском об оптимизации, которая была встроена в Linq для SQL, которая попыталась бы устранить многочисленные обращения к базе данных при выполнении операций над Linq объектам SQL IQueryable <> и объектам Linq to Object IQueryable <>. Это, в сочетании с общей архитектурой интерфейсов IQueryable, заставляет меня думать, что не должно быть проблем, работающих на разных провайдерах. Однако представляется возможным, что способность взаимодействовать может основываться на конкретной реализации поставщика.

Я знаю, что оперировал с комбинациями Linq to Object и Linq to XML без проблем.

0 голосов
/ 05 декабря 2008

Ну, я использую LINQ-запросы к спискам, к коллекциям. Я использую очень похожие запросы к таблицам SQL. У меня никогда не было проблем. Я слышал о людях, имеющих некоторые проблемы с использованием запросов LINQ к LINQ для объектов, но я думаю, что они обычно рассматриваются как ошибки LINQ, а не из-за различий в способах работы LINQ для объектов, LINQ to XML и LINQ to SQL. У меня были некоторые проблемы с LINQ еще за несколько дней до того, как я установил VS 2008 SP1, но с тех пор они были решены.

Пока вы принимаете во внимание то, что возвращает запрос, он должен работать просто отлично.

...