Как сделать Updetes и Удалить в Wcf с использованием Dataset.xsd - PullRequest
0 голосов
/ 23 декабря 2009

Я работаю над WCF с DataSet.xsd в приложении C #.

Не могли бы вы сказать мне, как сделать обновление и удаление?

Ответы [ 3 ]

0 голосов
/ 28 декабря 2009

Хотя я согласен с marc_s, мы использовали наборы данных с нашими службами WCF без проблем. Когда вы создаете свой прокси-сервер службы, набор данных, определенный в службе WCF, будет доступен на клиенте через открытые типы в прокси-классе. У службы WCF будет метод обновления, в котором он принимает набор данных в качестве параметра, и в этом методе вы вызовете .AcceptChanges (). Отметьте этот метод обслуживания как <OperationContract(IsOneWay:=False)>. Это позволит вам передать обновленный / сохраненный набор данных обратно клиенту либо в качестве типа возврата, либо в качестве параметра ByRef.

0 голосов
/ 10 августа 2010

Соответствующее сообщение в блоге

Я проработал эту ссылку сегодня довольно подробно. Он предоставляет довольно много деталей относительно передачи наборов данных из WCF и обеспечения функциональности обновления, хотя я не думаю, что возможность обновления полностью закодирована.

0 голосов
/ 23 декабря 2009

Ваш вопрос очень неясен и широк - я не думаю, что кто-то может действительно дать вам ответ.

Насколько я понимаю, вы используете .NET DataSet для хранения и манипулирования данными. И вы хотите каким-то образом использовать обновления и удаления с помощью службы WCF.

Проблема здесь в том, что механизм DataSet действительно не предназначен для работы в сервис-ориентированном мире. Подход DataSet разработан для приложения, имеющего прямой доступ к своему источнику данных - будь то SQL Server, Access или что-то еще. Он работает путем загрузки данных, обращающихся непосредственно к базе данных, и является более или менее точной копией базы данных «в памяти».

WCF, с другой стороны, ориентирован на обслуживание, и вы обычно работаете с одним объектом и / или списками или коллекциями объектов, а не с наборами данных.

Обычно служба WCF может выглядеть примерно так:

[ServiceContract]
interface ICustomerService
{
    [OperationContract]
    Customer LoadCustomerByID(int customerID);

    [OperationContract]
    List<Customer> LoadCustomersByCountry(string country);

    [OperationContract]
    int SaveCustomer(Customer customer);

    [OperationContract]
    int DeleteCustomer(int customerID);
}

Обычно вы не используете DataSets и WCF вместе - они не очень хорошо совпадают. Наборы данных несут с собой довольно значительные издержки, что не очень хорошо работает в мире услуг.

Если вы должны продолжать использовать DataSets и хотите использовать службу WCF для обновления и удаления ваших объектов, вы можете

  • создать службу WCF, как описано выше, для обновления или удаления объекта

  • при сохранении вашего DataSet определите те сущности, которые необходимо обновить, вызвав YourDataSet.GetChanges(DataRowState.Modified), а затем вызовите метод UpdateEntity в службе WCF для каждой из этих строк

  • определить те сущности, которые необходимо удалить, вызвав YourDataSet.GetChanges(DataRowState.Deleted), а затем вызвать метод DeleteEntity в службе WCF для каждой из этих строк

При таком подходе вы можете продолжать использовать свой DataSet в своем приложении и по-прежнему использовать службу WCF для обновления и удаления ваших объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...