Моя первая рекомендация: не используйте другой репозиторий generic c поверх Entity Framework, поскольку он уже реализует один.
С другой стороны, я видел случаи, когда это имеет смысл. Если вы находитесь в одном из этих случаев, рассмотрите возможность использования репозитория Generi c только для тех вещей, которые вы можете применить к каждому классу вашей модели. Как только объект вашей модели требует специального запроса, создайте для него собственный репозиторий. Например,
, возможно, для Отдела вы используете только ListAll (), а затем используете универсальный репозиторий c. .
Но давайте представим, что для сотрудника вы можете захотеть сделать более сложные вещи, например ListAllEmployessUnderBossThatAreOnHolidays (начальник сотрудника)
Тогда у вас может быть такая структура:
// All model classes inherit from this one
public class ModelObject
{}
public class Employee: ModelObject
{}
public class Department: ModelObject
{}
// This repository could be use for simple model objects that do simple operations
// For example, -ALL- Department operations are simple, and it never requires a
// complex query. So i handle it with this repository to avoid code duplication with
// other model objects that are also simple
public class IGenericRepository<TEntity> where TEntity : ModelObject
{ }
// Employee has some complex queries, so I create a repository for it that might or
// might not inherit from IGenericRepository
public class EmployeeRepository : IGenericRepository<Employee>
{ }