Нужен совет по методу модульного тестирования, который использует & ldquo; dozer.map & rdquo; метод

Почему это работает в одном случае, а не в сумматоре?

Поскольку EF действительно не знает о вашем методе Filter. Он не понимает, что он должен делать, поэтому он не знает, как перевести его в SQL. Сравните это с Where и т. Д., Которые он понимает .

Версия, в которой вы ее называете непосредственно , работает, потому что таким образом вы не заканчивается деревом выражений, содержащим вызов Filter - он просто вызывает Filter напрямую, что, в свою очередь, делает , создает запрос ... но тот, который понимает EF.

Я был бы очень удивлен, если бы вы могли решить, как заставить ваш метод Filter работать в EF-запросе ... но вы уже сказали, что использование Where все равно работает, поэтому зачем вообще использовать Filter? Я бы использовал версию Where - или еще лучше, используйте перегрузку Any, которая берет предикат:

context.Table.Filter(e => e.SubTable.Any(et => et.ID < 500) && e.ID < 500);
0
задан mufeez-shaikh 16 January 2019 в 18:16
поделиться

1 ответ

Dozer создаст EmpDto, если вы вызовете метод map, передав класс EmpDto в качестве второго аргумента. Он возвращает экземпляр EmpDto, который легко смоделировать

@GetMapping("/{id}")
public EmpDto getEmployeeById(@PathVariable long id){
    EmpModel empModel = service.getEmployeeById(id);
    return dozerBeanMapper.map(empModel,EmpDto.class);
}
0
ответ дан John Camerin 16 January 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: