LINQ присоединяется и ADO.NET Data Services - PullRequest
1 голос
/ 14 февраля 2009

У меня есть служба Windows, которая предоставляет три источника данных через ADO.NET Data Services. Эти источники данных предназначены только для чтения XML-файлов, которые загружаются в XDocument и затем предоставляются через .AsQueryable (); Источники содержат поля с целочисленными идентификаторами, которые можно рассматривать как «внешние ключи» между источниками данных.

Мой клиент использует эту службу данных и может запрашивать три источника данных индивидуально с помощью LINQ. Существуют элементы управления с привязкой к данным, которые используют данные.

На клиенте я бы хотел объединить эти три источника данных в стиле SQL. Первоначально я делал это с помощью соединения LINQ, но обнаружил, что службы данных ADO.NET не поддерживают это.

Мой второй подход состоял в том, чтобы извлечь данные в виде отдельных таблиц и затем выполнить клиентскую сторону соединения - несмотря на то, что это было менее чем оптимальным. Однако, поскольку LINQ получает данные лениво и создает запрос при перечислении данных, это в конечном итоге приводит к той же проблеме, что и первый подход.

Итак, теперь я думаю, что лучший способ сделать это - объединить все мои данные на стороне сервера и представить их, используя новый объект с интерфейсом IQueryable.

Это действительно лучший подход? Кажется .... неопрятным.

1 Ответ

2 голосов
/ 14 февраля 2009

Вы можете использовать свой второй подход и форсировать раннюю загрузку с помощью ToList (), а затем использовать LINQ to Objects для объединения двух списков.

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

...