linq to sql を介してリンク サーバーでの結合をシミュレートしています。私の質問は、linqtosql が y.Xstatuses のすべての行をメモリに取り込み、結合を行っているように見えるということです。これが真の場合、SQL サーバーにすべてのメモリを保持するにはどうすればよいですか (そして、クロス データ コンテキスト結合操作を実行します)。
var x = new fooDataContext();
var y = new barDataContext();
var allXNotDeleted = (from w in x.CoolTable
where x.IsDeleted != false).ToList();//for our demo this returns 218 records
var allXWithCompleteStatus = (from notDeleted in allXNotDeleted
join s in y.XStatuses on notDeleted.StatusID equals s.StatusID
where s.StatusID == 1
select notDeleted).Tolist();// insert massive memory gobbler here
return allXwithCompleteStatus;
編集:Kevinbabcockのアイデアを実装しようとしています
using (x = new fooDataContext())
using (var y = new barDataContext())
{
var n = (from notDeleted in x.GetTable<CoolTable>()
join z in y.GetTable<Xstatus>() on x.StatusID equals z.StatusID
where z.StatusID == 1 and x.IsDeleted != false
select x).ToList();
}
これでも、クロス コンテキスト クエリの例外がスローされます。