Когда я использую Entity Framework против таблицы SQL, это относится только к нужным столбцам сгенерированного SQL:Entity Framework выбирает слишком много столбцов в представлениях
ctx.Types.Select(rdi => rdi.Name)
становится
SELECT [Extent1].[Name] AS [Name]
FROM [dbo].[Types] AS [Extent1]
Однако, если я сделаю аналогичный запрос против представления SQL, Entity Framework генерирует SQL, ссылаясь на на каждую колонку на вид:
ViewTypes.Select(rdi => rdi.Name)
становится
SELECT [Extent1].[Name] AS [Name]
FROM (SELECT
[ViewTypes].[Name] AS [Name],
... every other column in my view ...
FROM [dbo].[ViewReferenceDataTypes] AS [ViewReferenceDataTypes]) AS [Extent1]
Я уверен, что SQL Server будет выполнять свою собственную оптимизацию, в конечном итоге, игнорируя все столбцы не заботиться об этом, но это по-прежнему приводит к массовым блока SQL отправляется в сервер. (Мой фактический пример включал объединение, в результате чего в каждом столбце от было выбрано несколько таблиц ...)
Есть ли веские основания для Entity Framework сделать это? Есть ли способ сделать это не сделать это?
ли вы включили LazyLoading? – Tico
@Tico У меня нет навигационных свойств, поэтому я не думаю, что это важно. (Если это имеет значение, мой ответ «не знаю»!) – Rawling
Hum..try Отключить его .. это не повредит; – Tico