WPF MVVM: автоматическое сохранение данных

В моем приложении WPF MVVM я хотел бы, чтобы изменения в моих Entity Framework классах сущностей автоматически сохранялись обратно в база данных. У меня было несколько идей по реализации этой функции, но ни одна из них не кажется оптимальной.

Вот мои текущие (неоптимальные) идеи: timer.Interval = TimeSpan.FromSeconds (1); timer.Tick + = (отправитель, аргументы) => Repository.SaveChanges (); timer.Start ();

  • Сохраните изменения в методе программы OnExit () .

     защищенное переопределение void OnExit (ExitEventArgs e)
    {
     Repository.SaveChanges ();
     base.OnExit (e);
    }
    
  • Сохранять изменения каждый раз, когда OnPropertyChanged () вызывается на одной из моих Entities :

     защищенных виртуальных пустот OnPropertyChanged (строка propertyName)
    {
     Repository.SaveChanges ();
    } 
    
  • Комбинация 2 и 3 ; сохраните данные после подсчета произвольного количества изменений свойств, а также сохраните в OnExit () , чтобы уловить любые изменения, которые не достигли предела изменений:

     const int limit = 5;
    int changes = 0; 
    
    защищенная виртуальная пустота OnPropertyChanged (строка propertyName)
    {
     если (++ изменяется == ограничение)
     {
     Repository.SaveChanges ();
     changes = 0;
     }
    }
    
  • Я полагаю, 1 & 3 - худшие из всех, и 2 (не уверен на 100%) не сохранят никаких изменений. если программа вылетает. 4 - мой предпочтительный вариант, поскольку он уравновешивает количество выполненных сохранений.

    Итак, мой вопрос: исходя из вашего опыта или нет, как лучше всего подойти / решить эту проблему?

    Заранее спасибо.

    6
    задан aligray 30 May 2011 в 10:49
    поделиться