Правильно ли требовать, чтобы SaveChanges явно вызывались в моем репозитории? - PullRequest
1 голос
/ 24 января 2012

В настоящее время я внедряю репозиторий в моем приложении MVC 3.Все реализуемые мной методы репозитория, которые каким-то образом изменяют данные (в первую очередь Add * и Delete *), НЕ вызывают метод SaveChanges.Я явно требую, чтобы пользователь моего репозитория сделал это.

Другой вариант, конечно, заключается в том, что я всегда вызываю SaveChanges в своих методах мутации.

То, что здесь является наилучшей практикойи почему?Я делал это первым способом достаточно долго, чтобы привыкнуть к нему, но мне любопытно, есть ли причина, по которой второй будет лучше?

Ответы [ 2 ]

1 голос
/ 24 января 2012

Обычно единица работы с точки зрения бизнеса или варианта использования включает в себя модификации многих объектов данных.

Вы действительно хотите сохранить все модификации в транзакции или ни одной из них, если что-то не получится во время отправки.

Так что хорошая идея вызывать SaveChanges только один раз в конце вашей единицы работы, а не внутри ваших методов Add, Update и Delete.

0 голосов
/ 24 января 2012

Я думаю, что есть веские причины сделать это в любом случае.Однако важно, чтобы вы сообщили, что ваши методы мутации не сохраняют изменения в базе данных.Что я сделаю, так это предоставлю перегрузки, которые позволят звонящим указывать.Кроме того, благодаря предоставлению перегрузок с помощью intellisense становится очень ясно (если мы можем предположить, что у всех IDE есть эта функция в 2012 году), что существует перегрузка для каждого из этих методов.В противном случае вы будете зависеть от пользователей вашего репозитория, которые будут читать вашу документацию (и никто больше этого не делает, верно?).

...