Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410

Как включить связанные ентити через репозиторий?

05.03.2020, 12:23. Показов 649. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот мой метод
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 private async Task ReCalculateStatements(CommissionSetting commissionSetting, CancellationToken cancellationToken)
        {
            try
            {
                await ValidateIsExistClosedStatement(commissionSetting.Id);
                var statements = await _statementRepository.GetAsync(s => s.CommissionSettingId == commissionSetting.Id);
                foreach (var i in statements)
                {
                    Driver driver = await _fleetRepository.GetByIdAsync(i.FleetId);
                    StatementHelper.ComputePaymentAmount(i, commissionSetting, driver);
                }
                await _statementRepository.UnitOfWork.SaveChangesAsync(cancellationToken);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Тут мне приходится в фориче для каждого элемента коллекции делать запрос GetByIdAsync().
Вопрос, можно ли как-то через репозиторий подтянуть данные сразу вот тут
C#
1
var statements = await _statementRepository.GetAsync(s => s.CommissionSettingId == commissionSetting.Id);
чтоб сделать вот такое?
C#
1
2
3
4
5
foreach (var i in statements)
                {
                    Driver driver = i.Items.FirstOrDefault().Driver;
                    StatementHelper.ComputePaymentAmount(i, commissionSetting, driver);
                }
Я знаю, что можно так через датаконтекст сделать, используя dbSet.Include. Но не хочу награмождать класс переменной датаконтекстом, на другом слое проекта.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2020, 12:23
Ответы с готовыми решениями:

Репозиторий через ADO на ASP.NET
Здравствуйте. Подскажите пожалуйста. Реализую репозиторий доступа к бд через адо, без использования ЕФ. В самом асп проекте использую...

Как получить связанные данных через relations и отобразить их через CActiveDataProvider?
Добрый день Уважаемые программисты! Суть вопроса: Имеется 3 таблицы, 2 из них реализованы как модели (Profile, Post) и 1...

Как в github подружить через ssh ключ проект и удаленный репозиторий?
Добрый день, 1. Создал ssh - $ ssh-keygen -t rsa -C "evosduple@mail.ru" 2. Создал новый репозиторий на github.com 3. Скопировал...

2
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
05.03.2020, 13:33
EntityFramework?
0
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
05.03.2020, 17:49  [ТС]
В общем, нашел решение, в репозитории написал конкретизированный метод и его юзнул
C#
1
2
3
4
5
6
7
8
9
public async Task<Dictionary<Statement, Driver>> GetStatemetsWithDrivers(CommissionSetting commissionSetting)
        {
            return await (from s in _context.Statements.Include(s => s.Items)
                          join f in _context.Fleets on s.FleetId equals f.Id
                          join d in _context.Drivers on f.FleetDriverId equals d.Id
                          where s.CommissionSettingId == commissionSetting.Id
                          select new KeyValuePair<Statement, Driver>(s, d))
                                .ToDictionaryAsync(x => x.Key, x => x.Value);
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.03.2020, 17:49
Помогаю со студенческими работами здесь

Как узнать какой репозиторий подключить, чтобы можно было устанавливать определенный пакет через sudo apt-get install
Это может показаться смешным... но все же... часто возникает проблема, что sudo apt-get install (например libpng-devel) ...

Как вывести связанные элементы через каталог?
В общем есть сайт с товарами. Товары привязанны к коллекциям, которые находятся в отдельном инфоблоке, при этом у разных брендов может...

Работа игры через репозиторий
Через Wine(или через другой репозиторий) будет работать игра Workers &amp; Resources: Soviet Republic( она на Windows)? ...

Метод Include не работает через репозиторий
День добрый всем. Значит такая проблема нарисавалась. Есть модель public class Company : IEntity { public int Id...

Как включить webmin через консоль?
Выключил автозагрузку webmin на VPS CentOS через интерфейс. Как его включить через консоль или файл конфигурации кто знает?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru