Мне бы хотелось, чтобы на моем уровне MVC не было репозиториев вообще.Как использовать простой инжектор для репозитория в бизнес-слое
У меня есть общий EFRepository
, IRepository
и PASContext
(который наследуется от DbContext) в моем слое проекта DAL.
Я установил простой инжектор с быстрым запуском в рамках проекта MVC, и это позволяет мне получить конструктор каждого контроллера, который я хочу получить в репозитории.
Но в моем решении у меня также есть проект BLL, и я хочу, чтобы слой MVC говорил только со слоем BLL, так как это архитектура проекта, и в будущем я бы хотел добавить логику в классы в слое BLL.
Также я не хочу, чтобы создать контекст, в моем BLL слое, но Repository не имеет конструктора, который принимает 0 аргументов, это мой ProductBLL
класс:
public class BLLProducts
{
IRepository<Product> ProductRepository;
public BLLProducts(EFRepository<Product> Repository)
{
ProductRepository = Repository;
}
public ICollection<Product> getAll()
{
return ProductRepository.All().ToList();
}
}
Как я могу инициировать BLLProduct
класс от контроллера или из unitTest без создания репозитория/контекста? поэтому я могу сохранить свою абстракцию здесь.
Я знаю, что мне нужно как-то использовать простой инжектор, я просто не знаю, как это сделать.
Спасибо большое! какую SOLID-архитектуру вы бы мне порекомендовали, что близко к моей нынешней архитектуре? ('BLL' разговаривает с' DAL' через репозитории, а 'MVC' разговаривает с' BLL', используя простой инжектор) – jony89
@ jony89: Изучите 5 принципов SOLID. Они дают вам гораздо более важное руководство, чем различные архитектурные стили, такие как трехуровневая архитектура.Программа для абстракций, ограничение обязанностей классов и предотвращение необходимости изменять классы при добавлении функций. – Steven