Как получить коллекцию сущностей из контекста в коде динамически? - PullRequest
0 голосов
/ 30 марта 2012

Предположим, у меня есть 2 таблицы: tab1, tab2 со службой EF и Wcf Ria, есть 2 сущности Tab1, Tab2, доступные на стороне клиента domaincontext. Затем я хочу получить набор сущностей динамически в коде, например

MyDomainContext.Entities("Tab1");

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 15 мая 2012

Я видел это в коде Кайла Макклеллана в его ComboBoxDataSource .Он принимает строковый параметр и вызывает операцию (или запрос).Теперь это часть проекта RiaServicesContrib в модуле ComboBoxDataSource.

Основы (из 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;
1 голос
/ 31 марта 2012

В вашем клиентском коде у вас будет ссылка, например:

using System.ServiceModel.DomainServices.Client;

Тогда вы бы загружали коллекции ваших сущностей так:

var ctx = new MyDomainContext();

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

В приведенном выше фрагменте кода служба домена вашего сервера предоставила вам GetTab1Query.

...