2012-03-30 10 views
0

2つのテーブルがあるとします.tab1、tab2、EFおよびWcf Riaサービスでは、domaincontextのクライアント側で2つのエンティティTab1、Tab2が利用できます。 は、それから私は、私はこれを行うことができますどのようにコード内のコンテキストからエンティティコレクションを動的に取得する方法は?

MyDomainContext.Entities("Tab1"); 

のように、コード内で動的なEntitySetを取得したいですか?

あなたのような、参照を持って、あなたのクライアント側のコードで

答えて

1

:上記のコードで

var ctx = new MyDomainContext(); 

ctx.Load<tab1>(_ctx.GetTab1Query(), LoadBehavior.RefreshCurrent, (op) => 
    { 
     var data = op.Entities; 
    } , null); 

サーバーをスニペット:

using System.ServiceModel.DomainServices.Client; 

そうは以下のように、あなたはあなたのエンティティのコレクションをロードしますサイドドメインサービスはGetTab1Queryを提供しています。

+0

感謝。あなたのソリューションでは、Tab1はハードコードされています。 Tab1、Tab2sなどの異なるエンティティセットを得ることができるように、Tablをパラメータにしたいとします。 – KentZhou

+0

@KentZhou可能ですが、可能にするにはDomainServiceを自分でコーディングする必要があります。 –

1

私はこれを、彼のComboBoxDataSourceのKyle McClellanのコードで見ました。彼は文字列パラメータを取り、Operation(またはQuery)を呼び出します。これは、ComboBoxDataSourceモジュールのRiaServicesContribプロジェクトの一部になりました。 (ComboBoxDataSource.cs、Refreshメソッドから)

必需品:

Type domainContextType = this.DomainContext.GetType(); 
MethodInfo operationInfo = domainContextType.GetMethods().Where(
    m => (m.Name == this.OperationName) && (m.GetParameters().Count() == this.Parameters.Count)).FirstOrDefault(); 

this.Operation = (InvokeOperation)operationInfo.Invoke(this.DomainContext, this.Parameters.Select(p => p.Value).ToArray()); 
this.Operation.Completed += this.OnInvokeCompleted; 
関連する問題