Здесь особо не на что смотреть - он просто выберет все поля из таблицы Category
, поскольку вы вызываете AsEnumerable
, тем самым извлекая все данные из таблицы Category
в память. После этого вы находитесь в объектном пространстве. Ну, в зависимости от того, что делает this.GetProducts()
- и я предполагаю, что это делает еще один EF-запрос, извлекающий результаты в память. Если это так, я настоятельно рекомендую вам опубликовать еще один вопрос с этим кодом и кодом вашего GetProducts
метода, чтобы мы могли взглянуть и переписать его более оптимальным образом. (Помимо этого, вы проецируете на сопоставленную сущность Model.Category
, которая снова не будет (и не должна) работать с Linq-to-Entities.)
Перед чтением вашего запроса я собирался порекомендовать сделать что-то вроде этого:
string sqlQueryString = ((ObjectQuery)qry).ToTraceString();
Но это не сработает, так как вы смешиваете Linq-to-Entities с Linq-to-objects, и у вас будет несколько запросов, если GetProducts
запросит EF. Вы можете отделить часть с помощью EF-запроса и посмотреть SQL-код следующим образом:
string sqlString = nwEntitiesContext.CategorySet.ToTraceString();
но, как я упоминал ранее - это просто выберет все из таблицы Categories
.
В вашем случае (если вы не переписываете свой код радикально), вы действительно хотите увидеть, какие запросы выполняются к БД при выполнении кода, и перечислить результаты этих запросов. Смотрите этот вопрос:
точный SQL-запрос, выполненный Entity Framework
Вы можете выбрать SQL Server Profiler
и Entity Framework Profiler . Вы также можете попробовать LinqPad
, но в целом я все же рекомендую вам более подробно описать, что делают ваши запросы (и, скорее всего, переписать их более оптимальным образом, прежде чем продолжить).