私はADO.NET Data Servicesで苦労している質問があります。ADO.NETデータサービス:非同期呼び出し?
エンティティをストレージ用に組み立てる場合、ルックアップファイルから関連する値を取得する必要があります。たとえば、ある人物がStatusCodesというテーブルにある「ペンディング」というステータスコードを割り当てられているとします。
Entity Frameworkでは、person.StatusCodeの値をStatusCodeのインスタンスと同じに設定する必要があります。 Entity Frameworkの中やLINQ2Sqlに私はこのようなものだろう:
var person = Person.CreatePerson(stuff);
var statCode = myContext.StatusCodeSet.Where(sc => sc.Description == "Pending").FirstOrDefault();
person.StatusCode = statCode;
// ...more code here...
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
new AsyncCallback(OnSaveAllComplete),
null);
statCodeのクエリは、ADO.NET Data Servicesのでは動作しませんし、私は機能がサポートされていないと言って、ランタイムエラーが発生します。私はstatCodeルックアップが非同期呼び出しではないためだと思います。
しかし、
var person = Person.CreatePerson(stuff);
var query = from stat in myContext.StatusCodeSet
where stat.Description == "Pending"
select stat;
var dsQuery = (DataServiceQuery<StatusCode>)query;
dsQuery.BeginExecute(
result => tutorApplication.StatusCode = dsQuery.EndExecute(result).FirstOrDefault(), null);
// ...more code here...
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
new AsyncCallback(OnSaveAllComplete),
null);
は、クエリの非同期な性質のためにどちらかを動作しませんセーブで人が発生する前に、結果が戻っていないだろう。
私はこれに正しく近づいていますか?
おかげ