我有一个简单的 DomainService:
[EnableClientAccess]
public class DomainService1 : IDomainService1
{
[Query(IsComposable = true)]
public IEnumerable<int> GetCollection(int from, int count)
{
const int max = 100000;
int[] _collection;
_collection = new int[max];
for (int i = 0; i < max; i++)
{
_collection[i] = i;
}
return _collection.Skip(from).Take(count);
}
}
在客户端,我生成了代理:客户端
我需要在客户端编写 LINQ 查询并在服务器端执行它并通过服务返回查询结果。
当我做:
var res1 = client.GetCollection(100, 20).Skip(5).Take(5);
比 client.GetCollection(100, 20) 在服务器端执行和 Skip(5) 和 Take(5) 在客户端执行。
当我做:
var res2 = client.GetCollection(100, 90000).Skip(10).Take(10);
它抛出异常:
基础连接已关闭:连接意外关闭。
我认为这是由于 client.GetCollection(100, 90000) 返回大的结果集。
有一种方法可以更好地了解服务器故障的原因吗?并且可以在服务器上执行来自客户端的查询?我是这么认为的,因为这允许 LinqToEntitiesDomainService。但我不能使用 EF,因为我只能访问内存中存储的对象列表。
谢谢你。
日本专利局