Должен ли объект получить доступ к сервисному уровню и выполнить методы обновления / сохранения? - PullRequest
0 голосов
/ 05 февраля 2011

Требования к моему приложению: если какое-либо свойство изменяется пользователем - например, ввод данных в текстовое поле, а затем выход из него - его необходимо немедленно обновить в базе данных.

Я использую WPF с шаблоном проектирования MVVM. Все мои сущности реализуют INotifyPropertyChanged. Если какое-либо свойство ЗАКАЗЧИКА изменяется, я делаю

Customer.cs

customerService.UpdateCustomer(this);

Должна ли сущность действительно обновляться? Или вызвать собственное обновление в базе данных?

Я имею в виду, как еще я могу сделать немедленное обновление свойства, если не в сущности?

1 Ответ

0 голосов
/ 05 февраля 2011

Сущность не должна обновлять себя;другой сервис (хранилище) должен сделать это.Вы можете заставить хранилище обновлять сущность, подписавшись на событие PropertyChanged сущности.В обработчике событий вы можете убедиться в том, что ваша сущность обновлена:

Customer c = new Customer();

c.PropertyChanged += (s, e) => customerService.UpdateCustomer(c);

Но в отношении идентификатора я считаю странным требование, чтобы ваша сущность изменялась при изменении свойства.Это означает, что транзакции совершенно бесполезны.Я имею в виду, у вас нет реальной «единицы работы», в которой все изменения должны быть зафиксированы или не должны сохраняться вообще?Кроме того, это также приводит к множеству обращений к базе данных.

...