Подтвердить операцию не удалось - PullRequest
2 голосов
/ 28 октября 2011

Я работаю с приложением silver light с платформой MVVM Concept и Enity, и у меня возникли проблемы с обновлением значений. Позвольте мне уточнить мою проблему. У меня есть три таблицы, скажем, A, B и C, где B имеет отношение внешнего ключа с A, а C имеет отношение внешнего ключа с B. Я мог бы сохранить эти таблицы без каких-либо проблем. Я использую представление для привязки сетки и могу получить значения для редактирования, но не могу обновить какие-либо изменения в базе данных. При обновлении получаю эту ошибку **

Сообщение: необработанная ошибка в приложении Silverlight Код: 4004
Категория: ManagedRuntimeError Сообщение: System.ServiceModel.DomainServices.Client.DomainOperationException: Отправка операции не прошла проверку. Пожалуйста, проверьте Entity.ValidationErrors для каждого объекта в EntitiesInError для более Информация. ан System.ServiceModel.DomainServices.Client.OperationBase.Complete (Exception ошибка) en System.ServiceModel.DomainServices.Client.SubmitOperation.Complete (OperationErrorStatus errorStatus) ru System.ServiceModel.DomainServices.Client.DomainContext. <> C_ DisplayClassb.b _3 (Object )

**

вот класс просмотра модели ..

public void Save(object obj)
    {   
            _currentCustomer.ModifiedBy = App.CurrentUser;
            _currentCustomer.ModifiedDateTime = System.DateTime.Now;

            foreach (BizFramework.Web.Model.Address address in AddressCollection.ToList())
            {
                string address1 = Convert.ToString(address.Address1);
                if (address1 != null && address1.Trim()!="")
                {                        
                    CVEReference = (from addref in _currentCustomer.CustomerVendorEmployeeReferences 
                                  where addref.CustomerID == _currentCustomer.CustomerID 
                                  select addref).SingleOrDefault();

                    BizFramework.Web.Model.Address addressExists = (from rec in CVEReference.Addresses
                                                                    where rec.AddressTypeID == address.AddressTypeID
                                                                    select rec).SingleOrDefault();
                    if (addressExists != null)
                    {
                        address.ModifiedBy = App.CurrentUser;
                        address.ModifiedDateTime = System.DateTime.Now;
                    }
                    else
                    {
                        address.AddressGuid = System.Guid.NewGuid();
                        address.ApplicationOwner = App.CurrentUser;
                        address.CreatedBy = App.CurrentUser;
                        address.ModifiedBy = App.CurrentUser;
                        address.CreatedDateTime = System.DateTime.Now;
                        address.ModifiedDateTime = System.DateTime.Now;

                        CVEReference.Addresses.Add(address);
                    }

                }
                else
                {
                    //_currentCustomer.Addresses.Remove(address);
                    AddressCollection.Remove(address);
                    //dcBusinessAccountingContext.Addresses.Remove(address);
                }
            }                         

        dcBusinessAccountingContext.SubmitChanges();
    }

//Setting Table A from the view like this

_currentCustomer = (from CustomerAddress in dcBusinessAccountingContext.Customers
                                    where CustomerAddress.CustomerID == AddrView.CustomerID
                                    select CustomerAddress).SingleOrDefault();

где _currentcustomer - это объектный объект A, CVEReference - объектный объект B, AddrView - набор сущностей табличного представления, а addresscollection - это коллекция C. Я не знаю, где происходит ошибка, или может быть причиной этого ошибка. Пожалуйста, проведите меня через этот вопрос. Спасибо.

1 Ответ

2 голосов
/ 28 октября 2011

Ошибка говорит о том, что это проблема проверки.измените dcBusinessAccountingContext.SubmitChanges(); на

dcBusinessAccountingContext.SubmitChanges(SubmitCallback, null);

Затем вы можете проверить ошибки:

private void SubmitCallback(SubmitOperation operation)
{
        if (operation.HasError)
        {
           //check "operation.EntitiesInError" for more details.
        }
}

надеюсь, это поможет вам.

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