Silverlightアプリケーションは、SQL Serverデータベースへの接続にWCF RIA Servicesを使用します。テーブルに新しいレコードの束を挿入する前に、このテーブルにフィールドのいずれかに特定の値を持つレコードが含まれているかどうかを確認する必要があります。Silverlight WCF RIAサービス。ブールメソッドの結果を確認する
ドメインサービスクラスの私のサーバー側のメソッド:
[Invoke]
public bool CheckRec(string nameFilter)
{
bool res = false;
if (this.ObjectContext.MyTest.FirstOrDefault(p => p.Name == nameFilter) != null)
{
res = true;
}
return res;
}
は、私は、クライアント上のメソッドの結果を確認することができますか? 私は、次のような方法を試したが、これを正しく実装するためにいくつかの助けを必要としています:
MyTestContext testcontext = new MyTestContext();
string tname = savetdlg.TNameTBox.Text;
testcontext.CheckRec(tname).Completed += (df, fg) =>
{
bool notunique = ?????? // how to get result of the method?
if (notunique == true)
{
//todo if record exists
}
else
{
//todo if record doesn't exist
}
};
直交するが、あなたのチェックのように書くことができますObjectContext.MyTest.Anyを返します(p => p.Name == nameFilter)。 –
チェックのコンテキストと理由に応じて、挿入を行うサーバコールの先頭に「if」チェックを追加することもできます。もちろん、2つの別々の呼び出しが必要な場合(たとえば、アップロード/書き込みされるレコードの数が膨大で、書き込みが不要なことはよくあることです)、気にしないでください。 :) –
IMHOこの種の操作は、操作が開始された後に完了したイベント(または同様の種類のイベント)に接続しないでください - もしあなたがインラインのラムダでロジックを定義するつもりなら、アクション>を代わりに渡すことができるオーバーロード、IMHO :)操作が既に開始された後に「完了」にフックアップすることは、あなたが意図的に競合状態を追加しているように思われるヒットする可能性は低いと認めます。 –