HasFIA RIA HasChanges для EntityFramework - PullRequest
4 голосов
/ 21 июня 2011

В настоящее время я преобразовываю некоторый код из служб RIA Silverlight / WCF в WPF / Entity Framework.Кодовая база широко использовала свойство HasChanges в контексте домена RIA.Представление будет привязываться к этому свойству для определения состояний кнопок.Например, форма будет привязана к этому свойству HasChanges, и всякий раз, когда пользователь изменяет любое свойство любого объекта внутри DomainContext, HasChanges становится истинным икнопки Save и Discard станут активными.

После некоторых исследований становится очевидным, что EF не имеет эквивалентного свойства HasChanges для ObjectContext.У кого-нибудь есть какие-нибудь умные идеи о том, как можно было бы дублировать эту функциональность внутри Entity Framework?

Я полагаю, это были бы важные функции для такого свойства:Свойство HasChanges становится истинным всякий раз, когда изменяется любое свойство любого объекта, загруженного в ObjectContext.

HasChanges становится ложным всякий раз, когда метод SaveChanges успешно вызывается для ObjectContext. Свойство HasChanges генерирует событие PropertyChanged, которое будет отображаться представлением для обновления состояний кнопок и т. Д.

У кого-нибудь есть идеи?Может быть, пользовательский генератор ADO.NET EntityObject?

1 Ответ

0 голосов
/ 21 июня 2011

У меня была такая же проблема.Решение не совсем идеальное, но оно работает.Также обратите внимание, что я использую Self Tracking Entities в приложении WPF.

Чтобы проверить изменения

  1. Создайте экземпляр контекста
  2. ApplyChanges () измодель к контексту
  3. Проверьте context.HasChanges ()

<code>    using (var context = new MyEntities())
    {
        context.MyTable.ApplyChanges(myTableInstance);
        return context.HasChanges();
    }

Это хорошо работает, даже для графа объектов.

...