Обертывание Entity Framework IQueryable внутри действия и применение фильтра ⇐ C#
-
Anonymous
Обертывание Entity Framework IQueryable внутри действия и применение фильтра
это мой первый вопрос о переполнении стека. Прямо сейчас я пытаюсь создать свою собственную версию шаблона репозитория на C# с инфраструктурой сущностей и наткнулся на проблему при попытке обернуть IQueryable в действие, подобное этому Action. мое намерение состоит в том, чтобы разрешить реализацию конкретной логики запроса в классе репозитория каждой модели.
Вот что я имею в виду:
Базовый репозиторий:
пространство имен Api.Domain.Repository.Base { общедоступный абстрактный класс Repository: IRepository, где T: BaseTable { частный контекст DataContext только для чтения; частный объект DbSet, доступный только для чтения; общедоступный репозиторий (контекст DataContext) { this.context = контекст; сущность = context.Set(); } защищенный IList Select (фильтр Action) { if (filter == null) выдать новое ArgumentNullException(nameof(filter)); var query =entity.AsQueryable(); фильтр (запрос); возврат запроса.ToList(); } } } Конкретный репозиторий:
пространство имен Api.Domain.Repository { общедоступный интерфейс IAddressRepository: IRepository { IList GetMinMax(int min, int max); } общедоступный класс AddressRepository: Repository, IAddressRepository { public AddressRepository (контекст DataContext): база (контекст) { } public IList GetMinMax(int min, int max) { return Select(q => q .Where(a => a.Id >= min && a.Id
это мой первый вопрос о переполнении стека. Прямо сейчас я пытаюсь создать свою собственную версию шаблона репозитория на C# с инфраструктурой сущностей и наткнулся на проблему при попытке обернуть IQueryable в действие, подобное этому Action. мое намерение состоит в том, чтобы разрешить реализацию конкретной логики запроса в классе репозитория каждой модели.
Вот что я имею в виду:
Базовый репозиторий:
пространство имен Api.Domain.Repository.Base { общедоступный абстрактный класс Repository: IRepository, где T: BaseTable { частный контекст DataContext только для чтения; частный объект DbSet, доступный только для чтения; общедоступный репозиторий (контекст DataContext) { this.context = контекст; сущность = context.Set(); } защищенный IList Select (фильтр Action) { if (filter == null) выдать новое ArgumentNullException(nameof(filter)); var query =entity.AsQueryable(); фильтр (запрос); возврат запроса.ToList(); } } } Конкретный репозиторий:
пространство имен Api.Domain.Repository { общедоступный интерфейс IAddressRepository: IRepository { IList GetMinMax(int min, int max); } общедоступный класс AddressRepository: Repository, IAddressRepository { public AddressRepository (контекст DataContext): база (контекст) { } public IList GetMinMax(int min, int max) { return Select(q => q .Where(a => a.Id >= min && a.Id
Мобильная версия