Я создаю новый проект с использованием бизнес-объектов (Employee, Product). Из-за ограничений я не использую LINQ to SQL или любой ORM Mapper.
Мне нужно передать код уровня доступа к данным. Я заинтересован в использовании "Образцового шаблона".
В соответствии с тем, что я понимаю, мне нужно создать общий репозиторий IRepository
, который реализуется всеми репозиториями ProductRepository, EmployeeRepository
.
Что меня смущает, так это то, что разные бизнес-объекты имеют разные требования. Например:
ProductRepository
GetAllProducts ();
GetProductById (int id);
GetProductByMaxPrice (double price);
GetProductByNamePrice (string name, double Price);
Get... (...);
EmployeeRepository
GetEmployeeByAge ();
GetEmployeeByJob (string description);
GetEmployeeBySalary (double salary);
Get... (...); //and so on
Как создать общий репозиторий, который отвечает различным требованиям к доступу к данным для разных объектов?
Я прочитал много теорий о шаблоне репозитория, но очень ценю рабочий пример.
Кроме того, если я могу создать все репозитории, используя общий репозиторий, использование шаблона factory становится простым. Например:
interface IRepository
{
....
}
ProductRepository : IRepository
{
....
}
EmployeeRepository : IRepository
{
....
}
Затем мы можем эффективно использовать шаблон factory, как:
IRepository repository;
repository = new ProductRepository ();
repository.Call_Product_Methods ();
repository = new EmployeeRepository ();
repository.Call_Employee_Methods ();