如何动态地从代码中的上下文中获取实体集合?

时间:2012-03-30 19:59:53

标签: silverlight-4.0 entity-framework-4 wcf-ria-services

假设我有2个表:tab1,tab2,使用EF和Wcf Ria服务,在domaincontext的客户端有2个实体Tab1,Tab2可用。 然后我想在代码中动态获取实体集,比如

MyDomainContext.Entities("Tab1");

我该怎么做?

2 个答案:

答案 0 :(得分:1)

在您的客户端代码中,您将有一个参考,例如:

using System.ServiceModel.DomainServices.Client;

然后你会加载你的实体的集合,如下所示:

var ctx = new MyDomainContext();

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

在上面的代码段中,您的服务器端域服务为您提供了GetTab1Query。

答案 1 :(得分:1)

我在Kyle McClellan的代码ComboBoxDataSource中看到了这一点。他接受一个字符串参数并调用一个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;