Компиляция Linq к SQL-запросам от нетривиального IQueryable

В представлении Redux больше похожа на параллельную структуру иерархии компонентов вашего приложения. Затем, когда вы связываете компоненты для редукции, вы открываете канал связи для изменения состояния и получения только определенных обновлений. Redux заботится о том, чтобы инициировать повторную обработку / рендеринг только тех компонентов, на которые влияет изменение состояния.

С другой стороны, если вы управляете состоянием, отправляя данные вверх / вниз по иерархии компонентов, вся структура компонентов получает новые реквизиты (я предполагаю, что вы используете реагировать), и все компоненты «перерабатываются», если только вы реализован метод shouldComponentUpdate, который может повлиять на вашу производительность. Это можно увидеть, если переопределить «componentWillReceiveProps» и утешить каждую обработку.

Для небольшого приложения проще всего использовать объект окна, но по мере роста вашего приложения это может быть проблемой для удобства обслуживания, а также есть другие преимущества использования избыточности, подобной безопасности.

6
задан LaserJesus 3 July 2009 в 07:07
поделиться

1 ответ

Что-то вроде этого работает, по крайней мере, в моих тестах:

Expression<Func<DataContext, IQueryable<User>> queryableExpression = GetUsers();
var expressionWithSomeAddedStuff = (DataContext dc) => from u in queryableExpression.Invoke(dc) where ....;
var expressionThatCanBeCompiled = expressionWithSomeAddedStuff.Expand();
var foo = CompiledQuery.Compile<DataContext, IQueryable<User>>(expressionThatCanBeCompiled);

Это выглядит немного многословно, и, вероятно, вы можете внести улучшения.

Ключевым моментом является то, что он использует методы Invoke и Expand из LinqKit. По сути, они позволяют вам создать запрос посредством композиции, а затем скомпилировать готовый результат.

2
ответ дан 17 December 2019 в 20:35
поделиться
Другие вопросы по тегам:

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