Трубы и фильтры и CompiledQuery.Compile
Я начал использовать linq to sql и Entity Framework и нашел опыт разработки довольно хорошим. Подобно тому, как вы можете разбить запрос на части и объединить разные запросы, это очень хорошо - посмотрите каналы и фильтры.
Но проблема, которую я обнаружил, заключается в том, что производительность может быть значительно увеличена (в моем случае примерно в 4 раза, которую я не могу игнорировать), если я использую скомпилированные запросы. Но проблема, которую я обнаружил в скомпилированных запросах, заключается в том, что им не нравится работать с IQueryable...
У кого-нибудь есть идеи, как мне обойти этот недостаток??? Я работал так, что скомпилированный запрос просто ссылался на другие запросы, которые использовали IQueryable, так что я мог переключаться или не использовать скомпилированные запросы или нет. Но, как я выяснил, это не так хорошо работает.
Есть идеи?
Ура Энтони
1 ответ
Нет, вы не можете скомпилировать результаты CompiledQuery с другим IQueryable. Помните, что единственной целью CompiledQuery является кэширование результатов преобразования IQueryable в каноническое дерево команд Entity Framework. Если бы вы могли затем скомпоновать это с другим IQueryable, то его нужно было бы перекомпилировать для выполнения, что полностью противоречит цели CompiledQuery.