Аргумент против принятия выражений от (или предоставления IQueryable<>
клиентской стороне) заключается в том, что он допускает не-клиентскую логику, такую как фильтрация и объединение, в «неправильном» месте. Если клиент выставляет неверные данные, теперь у вас есть два способа проверки: логика на стороне клиента и логика DAL. По сути, это слишком просто, чтобы не разделять ваши проблемы.
Тем не менее, бывают случаи, когда осознанное и осторожное использование этих методов может улучшить ваше приложение. Например, использование IQueryable<>
является отличным способом поддержки сортировки и разбиения на стороне клиента (пропустить / взять), которые выполняются сервером эффективно, а не в наборе результатов. Встречный аргумент в том, что вы должны просто указать параметры сортировки и разбиения в DAL.
В конечном итоге используйте то, что имеет смысл для вашего приложения. Если вы отдаете себе слишком много веревки и вешаете трубку, вы всегда можете выполнить рефакторинг позже.