リポジトリ パターンを実装しましたが、かなりうまく機能します。
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
}
IServiceRepository
コントローラーからいくつかのメソッドにアクセスしたいときは、これを行います
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;
}
}
ご覧のとおり、このシナリオでは注入IRepositories
します。必要に応じて、または必要に応じてIServiceRepository
注射することもあります。IRepositories
IServiceRepository
質問は、すべてIRepositories
をに移動する必要があるかもしれませんIServiceRepository
。そして、すべてのコントローラーで埋め込みのみIServiceRepository
とからアクセスIRepositories
しIServiceRepository
ますか? IServiceRepository
この実装は、コントローラーにのみ挿入されるため、より明確に見えます。ただし、たとえばRepositorie<User>
から1 つにアクセスするには、ServiceRepository
他のすべてのリポジトリをビルドして挿入する必要があるためServiceRepository
、アプリケーション全体の速度が低下する可能性があります。どう思いますか?