Как делает Queryable. Работа OfType?

Как кто-то, кто недавно переключил проект от MySQL до Postgresql, я не сожалею о переключателе.

основным различием, с точки зрения Django, является более строгая ограничительная регистрация в Postgresql, который является хорошей вещью, и также это немного более утомительно, чтобы сделать ручные изменения схемы (иначе миграции).

существует, вероятно, приблизительно 6 приложений миграции базы данных Django там, и по крайней мере один не поддерживает Postgresql. Я не считаю это недостатком хотя, потому что можно использовать одного из других или сделать их вручную (который является тем, что я предпочитаю банкомат).

Полнотекстовый поиск мог бы лучше поддерживаться для MySQL. MySQL поддерживали встроенный полнотекстовый поиск из Django, но это довольно бесполезно (никакое выделение основы слова, поиск фразы, и т.д.). Я использовал django-сфинкс как более оптимальный вариант для полнотекстового поиска в MySQL.

Полнотекстовый поиск встроен с Postgresql 8.3 (для более ранних версий нужен модуль TSearch). Вот хорошее учебное сообщение в блоге: Полнотекстовый поиск в Django с PostgreSQL и tsearch2

5
задан Craig Stuntz 17 September 2009 в 17:10
поделиться

1 ответ

Он не передает null в качестве метода - он передает его как " целевое выражение ", то есть то, для чего он вызывает метод. Это значение равно null, потому что OfType является статическим методом, поэтому ему не нужна цель.

Смысл вызова MakeGenericMethod заключается в том, что GetCurrentMethod () возвращает открытую версию, то есть OfType <> вместо OfType .

Queryable.OfType сам по себе не означает, что содержит любая логика для пропуска возврата каких-либо значений. Это зависит от поставщика LINQ. Точка Запрашиваемая. OfType предназначен для построения дерева выражений для включения вызова OfType , чтобы, когда провайдер LINQ в конечном итоге должен был преобразовать его в свой собственный формат (например, SQL), он знал, что OfType Был вызван .

Так работает Queryable - в основном он позволяет провайдеру видеть все выражение запроса как дерево выражений. Это все, что он должен делать - когда провайдера просят преобразовать это в реальный код, это , где происходит волшебство.

Queryable не может выполнять эту работу сам - у него нет представление о том, какое хранилище данных представляет поставщик. Как он мог придумать семантику OfType , не зная, было ли хранилище данных SQL, LDAP или что-то еще? Я согласен, что на то, чтобы развлечься, нужно время :)

5
ответ дан 14 December 2019 в 19:19
поделиться
Другие вопросы по тегам:

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