假设我有2个表:tab1,tab2,使用EF和Wcf Ria服务,在domaincontext的客户端有2个实体Tab1,Tab2可用。 然后我想在代码中动态获取实体集,比如
MyDomainContext.Entities("Tab1");
我该怎么做?
答案 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;