WCF Data Services UpdateObject не работает - PullRequest
1 голос
/ 24 июля 2010

У меня есть клиент Silverlight с сеткой, получающей данные из службы данных WCF.Работает нормально.

Однако если я хочу обновить некоторые измененные строки сетки, контекст данных службы UpdateObject не работает:

    DataServiceContext.UpdateObject(MyGrid.SelectedItem);
    foreach (Object item in DataServiceContext.Entities)
    {
        //
    }
    DataServiceContext.BeginSaveChanges(SaveChangesOptions.Batch, OnChangesSaved, DataServiceContext);

Я только что создал цикл для проверки значенийобъекты сущностей и значение не обновляются вообще.BeginSaveChanges работает нормально, но использует только не обновленные значения.

Есть идеи, как это исправить?

спасибо

1 Ответ

0 голосов
/ 20 октября 2010

Право на полностью очищенные SaveChanges, которые будут отображать сообщение об ошибке, если EndSaveChanges () завершится неудачно, как в примере кода ниже.Очевидно, что вы не можете использовать консоль для записи своего сообщения в silverlight, но вы поняли идею.

Например, когда я написал следующий пример, я обнаружил, что получаю запрещенную ошибку, потому чтонабор сущностей имел EntitySetRights.AllRead, а не EntitySetRights.All

 class Program
    {
        private static AdventureWorksEntities svc;

        static void Main(string[] args)
        {
            svc =
                new AdventureWorksEntities(
                    new Uri("http://localhost:5068/AWDataService.svc", 
                        UriKind.Absolute));
            var productQuery = from p in svc.Products
                    where p.ProductID == 740
                    select p;
            var product = productQuery.First();
            ShowProduct(product);
            product.Color = product.Color == "Silver" ? "Gray" : "Silver";
            svc.UpdateObject(product);
            svc.BeginSaveChanges(SaveChangesOptions.Batch, OnSave, svc);
            ShowProduct(product);
            Console.ReadKey();
        }

        private static void ShowProduct(Product product)
        {
            Console.WriteLine("Id: {0} Name: {1} Color: {2}", 
                product.ProductID, product.Name, product.Color);
        }

        private static void OnSave(IAsyncResult ar)
        {
            svc = ar.AsyncState as AdventureWorksEntities;
            try
            {
                WriteResponse(svc.EndSaveChanges(ar));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        private static void WriteResponse(DataServiceResponse response)
        {
            if(response.IsBatchResponse)
            {
                Console.WriteLine("Batch Response Code: {0}", response.BatchStatusCode);
            }
            foreach (ChangeOperationResponse change in response)
            {
                Console.WriteLine("Change code: {0}", change.StatusCode);
                if(change.Error != null)
                {
                    Console.WriteLine("\tError: {0}", change.Error.Message);
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...