私は単純な 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);
}
}
クライアント側では、プロキシを生成しました: client
クライアント側でcomose 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を使用できません。
ありがとうございました。
JPo