Вызывать репозитории из централизованного класса на основе прослушивателей событий? - PullRequest
0 голосов
/ 06 июня 2011

У меня есть программа, которая имеет дело с (виртуальными) транзакциями денежных переводов, и есть много классов, которые имеют логику, требующую сохранения данных в базе данных. Мой вопрос заключается в том, буду ли я вызывать свои репозитории непосредственно из различных классов или если вместо этого я буду вызывать события, которые может прослушивать объект класса DatabaseManager, и, следовательно, все репозитории будут вызываться из этого одного класса.

У меня нет опыта работы с базами данных и репозиториями, поэтому буду признателен за более глубокое понимание и советы здесь. Например, по каким критериям вы бы выбрали другой подход и т. Д.

Вероятно, важно отметить, что база данных в этом случае не используется для извлечения данных для выполнения логики программы, кроме как при запуске программы. Таким образом, в основном все данные хранятся в объектах времени выполнения и просто выгружаются в базу данных для архивирования.

1 Ответ

1 голос
/ 06 июня 2011

Я передаю IRepository своим классам, которые они затем могут вызывать для сохранения данных.С одной стороны, это облегчает тестирование, потому что вы можете легко внедрить фиктивный репозиторий, а с другой стороны, это делает очевидным, что ваши классы имеют такую ​​зависимость.Возможно, вы захотите найти термин Dependency Injection.

Простой пример:

class Account
{
    public Account(IRepository<Account> repository)
    {
        _Repository = repository;
    }

    public void ChangeOwner(Owner newOwner)
    {
        // change ownership
        _Repository.Save(this);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...