Как преобразовать выражение <Func <DTO, bool >> в выражение <Func <ENTITY, bool >> - PullRequest
0 голосов
/ 31 марта 2019

Я хочу преобразовать реальное выражение, которое может быть преобразовано в SQL через LINQ, из выражения DTO в выражение сущности.Попытался построить выражение, вызвать выражение с помощью средства отображения сущностей DTO, но выражение (логически) не переведено в SQL

// Function that contains the converter



public List<EngagementTypeModel> Filter(Expression<Func<EngagementTypeModel, bool>> filter) {
            var body = filter.Body;
            var Parameter = filter.Parameters[0];
            // Model is the DTO

            // NOT this ..
            // Expression<Func<EngagementTypeEntity,bool>> ConvertedExpression = (EngagementTypeEntity e) => filter.Compile()(BindEntityToModel(e));

            // Something like this
            var ConvertedExpression1 = Expression.Lambda<Func<EngagementTypeEntity, bool>>(filter, Expression.Parameter(typeof(EngagementTypeEntity), Parameter.Name));
            return _context.EngagementTypeEntities.Where(ConvertedExpression1).Select(x=>BindEntityToModel(x)).ToList();
        }


// API
[HttpPost]
        public ActionResult<string> SomeBusinessFilter()
        {
            _engagementTypeService.Filter(x => x.EngagementType == "foo" && x.Time < DateTime.Now && x.EngagementModel.EngaementTypeID == Guid.Empty);
            return Json(Ok("Hey"));
        }
``
...