は、私は空を返す次のクエリは(列挙は何の結果が得られていない)していますSL WCFサービス:のSilverlight RIAクエリは
var qry = _ctx.GetStudentByIDQuery(studentId);
var load = _ctx.Load(qry);
load.Completed += (s, e) =>
{
CurrentStudent = _ctx.Students.FirstOrDefault();
dataForm1.CurrentItem = CurrentStudent;
BeginEdit();
};
なぜ最初の方法は機能しませんか?サーバー側のクエリは、IDと同じフィルタリングを最初のクエリと同じように実行するため、クエリ自体ではありません。私が見たRIAの使用例のどれもCompletedイベントハンドラを使用していません。 RIAはシーンの背後にある非同期ロードを処理することになっています。何がありますか?
編集 私は少し質問に再集中したいと思っていました。ここであなたが期待するのと同じように動作し、私が持っている別のクエリです:
var query = ctx.GetStudentsWithAdultContactsQuery();
studentDataGrid.ItemsSource = ctx.Students;
ctx.Load(query);
私はここで明示的に完了したコールバックを処理していないのですが、それは私がRIAはhereを含め、ウェブ上の例で使用される参照方法です。したがって、このクエリと、動作しないクエリとの明白な違いは、(a)フィルタリングと(b)データバインディングターゲットです。しかし、なぜ違いを生むべきですか?
私はおそらくLinqToSqlDomainServiceを使用していることを言及する必要があります – Antony
サービス側でこれを行う必要があると言いますか? – VoodooChild
いいえ、コードは両方の例でクライアント上にあります。 2番目の例では、フィルタリング(SingleOrDefault(s => ...)がサーバ上にありますが、それはおそらく問題を混乱させます)。なぜなら、RIAが非同期コールバックを処理していると思ったからです。 – Antony