Я хочу создать единицу рабочего класса, который обертывает репозитории аналогично this.
Проблема, с которой я столкнулась, заключается в попытке реализовать инъекцию зависимостей, заменив общие репозитории в этом примере на интерфейс IRepository. В uow в связанной статье они используют геттеры для проверки того, создан ли репозиторий, а если нет, то создайте его.
public GenericRepository<Department> DepartmentRepository
{
get
{
if (this.departmentRepository == null)
{
this.departmentRepository = new GenericRepository<Department>(context);
}
return departmentRepository;
}
}
Что сильно связано.
Я вижу два пути.
- Использовать инъекцию конструктора.
- Используйте инъекцию установщика.
Проблема с 1 заключается в том, что если я внедряю все репозитории, я должен создавать экземпляр каждого репозитория, даже если я не использую их в этом конкретном экземпляре рабочей единицы. Таким образом, накладные расходы на это. Я предполагал использовать одну единицу рабочего класса, основанный на базе базы данных, поэтому это привело бы к множеству ненужных экземпляров и гигантскому конструктору.
Проблема с 2 заключается в том, что было бы легко забыть устанавливать и заканчивать нулевыми исключениями ссылки.
Есть ли какие-либо лучшие практики в этом сценарии? И есть ли другие варианты, которые я пропустил?
Я просто подхожу к инъекции зависимостей и проделал все исследования, которые я могу найти по этой теме, но у меня может быть что-то недостающее.