Я новичок в EF Core и разрабатываю с ASP. NET Core MVC с Entity Framework Core. Мне нужно запросить мою модель, динамически выбирая:
тип, - связанные объекты, которые должны быть загружены, - критерии фильтрации, - поля для загрузки, - функции для выполнения с результатом
Другими словами, мне нужно превратить этот запрос * stati c:
var staticquery = _context
.User
.Where(u => u.UserId == 1)
.Include(u => u.Profile)
.Where(p => p.Profile.ProfileDescription == "sometext")
.Select(p => p.Profile.Segment)
.Count();
в этот динамический c запрос:
var dEntity = "User";
var dEntityProperty = "USerId");
var dEntityValue = 1;
var dIncludeProperty = "Profile";
var dWhereProperty = "ProfileDescription";
var dWhereValue = "sometext";
var dSelect = "Profile.Segment"
var dOper = "Count()";
var dynquery = _context
.dEntity
.Where(x => x.dEntityProperty == dEntityValue)
.Include(x => x.dIncludeProperty)
.Where(x => x.dIncludeProperty.dWhereProperty == dEntityValue.dWhereValue)
.Select(x => x.dSelect)
.dOper;
Не нужно работать конкретно со строкой. Подойдет любое динамическое выражение c. Я искал решение в течение нескольких часов и нашел первую часть (динамический запрос сущности к запросу) в этом SO ( Таблица динамического доступа в EF Core 2.0 ). Но так как это решение оставляет меня с объектом IQueryable, похоже, что оттуда переходить к включению связанных сущностей, фильтровать их и т. Д. c. Не представляется возможным. Я заранее благодарю вас за вашу помощь (пример также был бы очень признателен, так как упомянутое SO, похоже, решает и мою конкретную проблему c в комментариях от респондента, но оставляет ее в общем («- принимая IQueryable и строку вызовите метод Include с помощью отражения) ».