J'ai mis en œuvre le modèle de référentiel et cela fonctionne plutôt bien.
public interface IServiceRepository
{
User GetUser(int id);
User GetUser(string email);
User GetUser(string email, byte[] password);
//SkipCode
}
//Service repository where I keep extended methods for database manipulation
public class ServiceRepository : IServiceRepository
{
private readonly IRepository<User> _userRepository;
private readonly IRepository<Order> _orderRepository;
private readonly IUnitOfWork _unitOfWork;
public ServiceRepository(IRepository<User> userRepository, IRepository<Order> orderRepository, IUnitOfWork unitOfWork)
{
}
//SkipImplementation
}
Lorsque je veux accéder à certaines méthodes de IServiceRepository
dans Contrôleur je fais ça
public class AccountController : Controller
{
private readonly IRepository<OrderDetail> _orderDetailRepository;
private readonly IRepository<UserDetail> _userDetailRepository;
private readonly IServiceRepository _serviceRepository;
public AccountController(IRepository<OrderDetail> orderDetailRepository, IRepository<UserDetail> userDetailRepository, IServiceRepository serviceRepository)
{
_orderDetailRepository = orderDetailRepository;
_userDetailRepository = userDetailRepository;
_serviceRepository = serviceRepository;
}
}
Comme vous le voyez, j'injecte IRepositories
y IServiceRepository
dans ce scénario. Parfois, j'injecte seulement IRepositories
o IServiceRepository
en fonction des besoins.
La question serait de savoir si je dois déménager tout IRepositories
en IServiceRepository
. Et dans tous les contrôleurs intégrés seulement IServiceRepository
et l'accès IRepositories
de IServiceRepository
? Cette mise en œuvre me semble plus claire parce que seuls IServiceRepository
sera injecté dans les contrôleurs. Mais pour accéder par exemple à un Repositorie<User>
de ServiceRepository
devra construire et injecter tous les autres référentiels dans ServiceRepository
Cela peut donc ralentir l'ensemble de l'application. Qu'en pensez-vous ?