Трубы и фильтры и CompiledQuery.Compile

Я начал использовать linq to sql и Entity Framework и нашел опыт разработки довольно хорошим. Подобно тому, как вы можете разбить запрос на части и объединить разные запросы, это очень хорошо - посмотрите каналы и фильтры.

Но проблема, которую я обнаружил, заключается в том, что производительность может быть значительно увеличена (в моем случае примерно в 4 раза, которую я не могу игнорировать), если я использую скомпилированные запросы. Но проблема, которую я обнаружил в скомпилированных запросах, заключается в том, что им не нравится работать с IQueryable...

У кого-нибудь есть идеи, как мне обойти этот недостаток??? Я работал так, что скомпилированный запрос просто ссылался на другие запросы, которые использовали IQueryable, так что я мог переключаться или не использовать скомпилированные запросы или нет. Но, как я выяснил, это не так хорошо работает.

Есть идеи?

Ура Энтони

1 ответ

Решение

Нет, вы не можете скомпилировать результаты CompiledQuery с другим IQueryable. Помните, что единственной целью CompiledQuery является кэширование результатов преобразования IQueryable в каноническое дерево команд Entity Framework. Если бы вы могли затем скомпоновать это с другим IQueryable, то его нужно было бы перекомпилировать для выполнения, что полностью противоречит цели CompiledQuery.

Другие вопросы по тегам