У меня есть слой доступа к данным, который возвращает репозитории.Например, у меня есть следующие интерфейсы репозитория:
У меня есть реализации Entity Framework этих репозиториев.Эти реализации внедряются во время выполнения с Ninject.
У меня есть один контроллер с несколькими репозиториями, приведенными ниже
IUploadRepository _uploadRepository;
ISalesRepository _salesRepository;
ITRSalesRepository _trsalesRepository;
ILocalPurchaseRepository _localRepository;
с одним контроллером с именем -HomeController
Для того, чтобы функционироватьоперации, мне нужно использовать DBContext в реализации, поэтому я реализую все эти интерфейсы, как показано ниже:
public class UploadRepository : IUploadRepository
{
private readonly XMANEntities _entities;
public UploadRepository(XMANEntities entities)
{
_entities = entities;
}
*here goes all implementation with context for specific*
}
Здесь теперь у меня есть конструктор в HomeController, который выглядит так:
public class HomeController : Controller
{
private IUploadRepository uploadRepository;
public HomeController()
{
this.uploadRepository = new UploadRepository(new XMANContext());
}
public HomeController(IUploadRepository uploadRepository)
{
this.uploadRepository = uploadRepository;
}
}
Как я могу использовать других в этом контроллере. Является ли плохой практикой вводить несколько репо в контроллер?я пробовал так, как указано ниже:
public HomeController() : this(new UploadRepository(
new XMANEntities()), new SalesRepository(new XMANEntities()),
new TRSalesRepository(
new XMANEntities()), new LocalPurchaseRepository(new XMANEntities()))
{
}
public HomeController(UploadRepository uploadRepository, SalesRepository salesRepository,
TRSalesRepository trsalesRepository, LocalPurchaseRepository localPurchaseRepository)
{
this.uploadRepository = uploadRepository;
this.salesRepository = salesRepository;
this.trsalesRepository = trsalesRepository;
this.localPurchaseRepository = localPurchaseRepository;
}