Следующая ошибка в отладке кода Visual Studio mithril.js с помощью TypeScript: var requestService = _8 (window, PromisePolyfill)

Полезно понять разницу между Expression> и Func<> .

В Expression e => e.ID < 500 хранится информация о это выражение: есть T e, что вы обращаетесь к свойству ID, вызывая оператор < со значением int 500. Когда EF смотрит на это, он может превратить его в нечто вроде [SomeTable].[ID] < 500.

A Func e => e.ID < 500 - это метод, эквивалентный:

static bool MyMethod(T e) { return e.ID < 500; }

Он скомпилирован как IL-код, который делает это; он не предназначен для «восстановления» SQL-запроса или чего-то еще, только запускается.

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

0
задан Brandon O 16 January 2019 в 18:16
поделиться