1

我有一个 Windows 服务,它通过 ADO.NET 数据服务公开三个数据源。这些数据源是加载到 XDocument 中然后通过 .AsQueryable() 公开的只读 XML 文件;源包含具有整数 ID 的字段,可以将其视为数据源之间的“外键”。

我的客户使用此数据服务,并且可以使用 LINQ 分别查询三个数据源。有使用数据的数据绑定控件。

在客户端,我想在这三个数据源之间进行 SQL 样式的连接。我最初使用 LINQ 连接来执行此操作,但发现 ADO.NET 数据服务不支持此操作。

我的第二种方法是将数据作为单独的表获取,然后执行连接客户端——尽管这不是最佳的。但是,由于 LINQ 会延迟获取数据并在枚举数据时构造查询,这最终会导致与第一种方法相同的问题。

所以,我现在认为最好的方法是在服务器端加入我的所有数据,并使用提供 IQueryable 接口的新对象公开它。

这真的是最好的方法吗?似乎....不整洁。

4

1 回答 1

2

您可以使用第二种方法并使用 ToList() 强制提前加载,然后使用 LINQ to Objects 对 2 个列表进行连接。

几乎不是最优的,并且您将失去可组合性,但它应该可以解决延迟加载问题。

于 2009-02-14T19:12:54.307 回答