EF 4.3.1 и EF 5.0 DbSet.Local медленнее, чем фактический запрос к базе данных.

У меня есть база данных с таблицей из примерно 16 500 городов и модель данных EF (Database-First) для этой базы данных. Я загружаю их в память с помощью кода:

Db.Cities.Load()

... затем, когда пришло время их использовать, я попытался выполнить каждый из следующих запросов:

Dim cities() As String = Db.Cities.Select(Function(c) c.CityName).ToArray

Dim cities() As String = Db.Cities.Local.Select(Function(c) c.CityName).ToArray

Первый запрос является быстрым (~ 10 мс), но второй выполняется приблизительно за 2,3 секунды для первого запуска (хотя он выполняется быстрее, чем первый запрос, когда он вызывается после этого).

Это не имеет смысла, потому что SQL Server Profiler проверяет, что первый запрос попадает в базу данных на другом компьютере, а второй - нет!

Я пытался выключитьDb.Configuration.AutoDetectChangesEnabledи я попытался предварительно сгенерировать представления.

Что я могу сделать, чтобы сделать.Local Быстрее? (Не все клиенты, работающие с этим приложением, будут работать в быстрой локальной сети.)

Ответы на вопрос(3)

Ваш ответ на вопрос