Мне нужно реализовать общий репозиторий (многократно используемый .dll) для применения операций (например, обновление, вставка, удаление, поиск), сохраняя тот факт, что мы можем делать сложные запросы из базы данных, содержащей несколько объединений и сложностей.
Я так делаю
public class GenericRepository<TEntity> where TEntity : class
{
//internal SchoolContext context; which context I need to use to behav as generic(.dll)
internal DbSet<TEntity> dbSet;
public GenericRepository(SchoolContext context) //that won't be this context
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
.... public virtual void Insert(TEntity entity){..}
.... public virtual void Delete(TEntity entityToDelete){..}
.... public virtual void Update(TEntity entityToUpdate){..}
}
Итак, в каком контексте, чтобы как-то добиться той же работы DBContexts (т. Е. Взаимодействовать с БД из объектов, использующих LINQ)?
Во-вторых,
Я использую некоторые конкретные классы (в случае, когда этот общий репозиторий не удовлетворяет моим рабочим требованиям), например, какой-то огромный сложный запрос.
как
class StudentRepository : GenericRepository
{
}
class PersonRepository : GenericRepository
{
}
...
Является ли этот способ правильным или доступна какая-то другая хорошая реализация?
С уважением
Усман