0

Возможно, я ошибался в том, как я думаю, что все будет работать , но я действительно смущен, поскольку я впервые использую шаблон дизайна репозитория. Проблема заключается в том, что класс репозитория будет иметь толькоПользовательские функции в классах дизайна хранилища

GetaLL(), GetALLByID(), Update() или Save().

Но что мне нужно, чтобы извлечь записи, чтобы у меня была группа пользователей в одной таблице , и для каждой группы мне нужно подсчитать количество пользователей в каждой группе. Таблица пользователей - это другая таблица.

В качестве родительской таблицы можно использовать отношение «UserGroup», которые имеют уникальные группы пользователей , но в этой таблице UserGroup есть ключ, который будет внешним ключом в другой таблице «Пользователи». Может быть много пользователей в группе и аналогично этому Мне нужно выяснить, сколько ролей находится под одной таблицей i.e «UserGroup». Это еще одна таблица «ролей», которая будет иметь «UserGroups» таким же образом, как и , она была в «пользовательской» таблице.

И вот как я могу получить записи. Мой репозиторий только

public abstract class Repository<T> 
     where T : class 
    { 
     private readonly IDbSet<T> _dbset; 

    public virtual IQueryable<T> GetAll() 
     { 
      return this._dbset; 
     } 
} 

И в контроллере Я зову его, как показано ниже:

private readonly Repository<UserGroup> _GroupRepository; 

    public IEnumerable<UserGroupModel> GetListedGroups() 
     { 
      var list = this._GroupRepository.GetAll(); 

     } 

ответ

0

Вы можете иметь новый класс, который производный от Repository<T> и добавить новые методы в нем.

public class UserGroupRepository : Repository<UserGroup> 
{ 
    public UserCountInGroups GetUserCountInGroup() 
    { 
     // Do something with this._dbset here. 
    } 
} 

Так что в контроллере используется UserGroupRepository вместо Repository<UserGroup>

private readonly UserGroupRepository _GroupRepository; 

public IEnumerable<UserGroupModel> GetListedGroups() 
{ 
    var list = this._GroupRepository.GetAll(); 
    var userCount = this._GroupRepository.GetUserCountInGroup(); 
    // Do something here. 
} 
+0

Но это будет вызывать базы данных в два раза, а затем, если предположим, мне нужно, чтобы получить роли COUNT также я снова должен написать другой метод для подсчета ролей и, кроме того, вывод выравнивается в формате таблицы, как показано ниже: UserGroup GroupNAme TotalUsers TotalRoles 1 Admin 5 10 – Sweetie

+0

@Sweetie Я думаю, вы должны поставить эту деталь и модель данных в вопрос. – Hendry

Смежные вопросы