EF очень медленно при получении информации о провайдере из базы данных

Я обнаружил, что большой компонент медленного времени запуска EF может быть связан с получением информации о поставщике из базы данных. Это очень раздражает при выполнении интеграционных тестов или других итеративных разработок. Может ли кто-нибудь объяснить, почему получение информации о поставщике происходит медленно или что можно сделать по этому поводу? Мы используем EF5.

Вот пример, демонстрирующий это поведение:

void Main() { Database.SetInitializer<ModelDbContext>(null); Database.SetInitializer<ModelCreatingDbContext>(null); // passing the provider information in is very fast var sw2 = Stopwatch.StartNew(); var builder = new DbModelBuilder(); builder.Entity<SqlConnectionStringBuilder>().HasKey(c => c.ConnectionString).ToTable("strings"); var q2 = new ModelDbContext(builder.Build(new DbProviderInfo("System.Data.SqlClient", "2008")).Compile()).Set<SqlConnectionStringBuilder>().Take(1).ToString(); Console.WriteLine(sw2.Elapsed); // < 1 second // letting EF determine it from the connection string is sometimes very slow var sw1 = Stopwatch.StartNew(); var q = new ModelCreatingDbContext().Set<SqlConnectionStringBuilder>().Take(1).ToString(); Console.WriteLine(sw1.Elapsed); // can be upwards of 13 seconds! } public class ModelDbContext : DbContext { public static readonly string Connection = // connection string here public ModelDbContext(DbCompiledModel model) : base(Connection, model) { } } public class ModelCreatingDbContext : DbContext { public ModelCreatingDbContext() : base(ModelDbContext.Connection) { } protected override void OnModelCreating(DbModelBuilder builder) { builder.Entity<SqlConnectionStringBuilder>().HasKey(c => c.ConnectionString).ToTable("strings"); base.OnModelCreating(builder); } } 

  • Использование предложения IN с помощью ExecuteQuery из LINQ to SQL
  • Согласование нескольких ключевых слов от статей, содержащих их, а затем упорядочение по убыванию
  • LINQ: как выбрать определенные столбцы с помощью IQueryable ()
  • Если весь доступ к базе данных SQL Server выполняется через хранимые процедуры
  • Производительность Linq to SQL с группировкой
  • Невозможно вставить явное значение для столбца идентификации в таблицу, если для параметра IDENTITY_INSERT установлено значение OFF
  • Linq соединяется с последним экземпляром в таблице
  • Проверка одной даты падает между датами Диапазон-Linq запрос
  • Получить изображение с SQL Server в datagrid с помощью wpf C # Ado.Net Data Entity
  • Добавление запросов bool ActiveFlag
  • преобразование ms sql "group by" запрос в linq в sql
  • Давайте будем гением компьютера.