1

ADO.Net データ サービスを試しています。すべての例はリストを取得する方法を示していますが、単一の値を取得するにはどうすればよいでしょうか? 例: 製品 X の価格。

私が使用するLINQクエリは次のとおりです。

var qry = (svcContext.Products の p から p.ProductName == "Chair" && p.Colour == 1 select c) as DataServiceQuery;

返品された製品;

qry.BeginExecute( (pr) => returnedProd = qry.EndExecute(pr).First(), null);

ここでは、製品を取得してローカル変数にロードしようとしていますが、ローカル変数は null のままです。

確かに、私はそれを完全に間違っています:) ...どんな助けも大歓迎です。

4

4 に答える 4

1

それは想定されていません

var qry =(svcContext.Productsのpからp.ProductName == "Chair" && p.Colour == 1 select p)どこでcを宣言しましたか?

于 2009-07-22T11:31:34.170 に答える
0

申し訳ありませんが

var qry = (svcContext.Products の p から p.ProductName == "Chair" && p.Colour == 1 select p) as DataServiceQuery< Product >;

于 2009-07-22T11:39:12.000 に答える
0

First()結果セットが空の場合は例外をスローする必要があります-クエリが実行されていると確信していますか?

于 2009-07-22T12:47:55.533 に答える
0

すべての Silverlight 発信要求の非同期性に悩まされるのは、あなたが初めてではありません。

ラムダ式では

(pr) => returnedProd = qry.EndExecute(pr).First() 

ローカル変数 returnedProd をキャプチャしますが、通常、BeginExecute が呼び出された後にスピンオフするスレッドは遅すぎます。実行が現在のメソッドの範囲外になり、変数が失われた後に実行される可能性があります。

解決策は、「returnedProd」を効果的に使用して UI を設定するか、ラムダ式で必要なことを行うことです。何かのようなもの :

(pr) => {
    returnedProd = qry.EndExecute(pr).First();
    MessageBox.Show("Retrieved record" + returnedProd.Id);
}

それ以外の場合は、コミュニティにとって役立つ回答です。数週間前に回答があればいいのにと思います:(

于 2009-08-26T11:12:59.437 に答える