Способы вставки, обновления и удаления служб RIA не видны в клиенте WPF для служб RIA - PullRequest
1 голос
/ 29 ноября 2011

Я действительно не могу понять, почему в рамках клиента WPF для RIA Services я не вижу методов для обновления, вставки и удаления.Но я вижу только все методы "GET".

RiaService.DomainServicesoapClient proxy = new RiaService.DomainServicesoapClient( EndPointConfigurationNameData, EndpointAddress);

proxy.GetClients(); // That's OK

// But where is  ????
proxy.UpdateClient(...

Приведенный ниже код был сгенерирован Visual Studio 2010.

[RequiresAuthentication]
[EnableClientAccess()]
public class RiaDomainService : LinqToEntitiesDomainService<MyEntities>
{
   .....
// TODO:
        // Consider constraining the results of your query method.  If you need additional input you can
        // add parameters to this method or create additional query methods with different names.
        // To support paging you will need to add ordering to the 'Clients' query.
        [Query(IsDefault = true)]
        public IQueryable<Client> GetClients()
        {
            return this.ObjectContext.Clients;
        }

        public void InsertClient(Client client)
        {
            if ((client.EntityState != EntityState.Detached))
            {
                this.ObjectContext.ObjectStateManager.ChangeObjectState(client, EntityState.Added);
            }
            else
            {
                this.ObjectContext.Clients.AddObject(client);
            }
        }

        public void UpdateClient(Client currentClient)
        {
            this.ObjectContext.Clients.AttachAsModified(currentClient, this.ChangeSet.GetOriginal(currentClient));
        }

        public void DeleteClient(Client client)
        {
            if ((client.EntityState != EntityState.Detached))
            {
                this.ObjectContext.ObjectStateManager.ChangeObjectState(client, EntityState.Deleted);
            }
            else
            {
                this.ObjectContext.Clients.Attach(client);
                this.ObjectContext.Clients.DeleteObject(client);
            }
        }

Таким образом, методы CRUD не распознаются контекстом RIA ... Любая подсказка, как получить его подклиентская сторона

ОБНОВЛЕНИЯ:

Я обнаружил, что этот код работает как CRUD

RiaService.ChangeSetEntry changeSetEntry = new RiaService.ChangeSetEntry();
changeSetEntry.Entity = {entity itslef};
changeSetEntry.Operation = RiaService.DomainOperation.Insert;
changeSetEntries.Add(changeSetEntry);

proxy.SubmitChanges(changeSetEntries.ToArray());

Мой вопрос: есть ли другие методы дляреализовать операции CRUD под клиентом WPF для RIA Services?

Ответы [ 2 ]

2 голосов
/ 03 июля 2012

Судя по вашим обновлениям, вы уже нашли следующую статью, но я публикую сообщение на тот случай, если кому-то еще будет интересно, так как я считаю, что он содержит информацию, которую вы ищете:

http://blogs.msdn.com/b/davrous/archive/2010/12/03/how-to-open-a-wcf-ria-services-application-to-other-type-of-clients-the-soap-endpoint-3-5.aspx

0 голосов
/ 29 ноября 2011

В коде нет метода с такой подписью "void UpdateClient ()"

у вас есть ...

public void UpdateClient(Client currentClient)

Вы уверены, что код, который вы просматриваете, предназначен для правильного класса (RiaService.DomainServicesoapClient)?

Не могу сказать, поскольку вы не предоставили код инициализатора класса.

...