Entity Framework 6 с SQL Server Compact 4.0

Я (по-прежнему) пытаюсь следовать онлайн-видеоуроку о том, как использовать Entity Framework с кодовым подходом. Я до тех пор, пока мой EDM проверяет штраф, и настало время фактически создать базу данных. Инструктор использует SQL Server и, очевидно, база данных создается автоматически, когда первая команда запроса (ToList()) связана с объектом DbContext.

Поскольку я планирую использовать базу данных на базе SQL Server Compact в будущем приложении, я попытался воспроизвести пример учебника с помощью SQL Server Compact 4.0. Я установил пакеты NuGet "EntityFramework.SqlServerCompact" и "Micrososft SQL Server Compact Edition". Очевидно, это приводит к записи нового поставщика в app.config:

<providers>
  <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>

Но когда я запускаю первую команду запроса, я получаю сообщение об ошибке

Миграции разрешены для контекста "DataModelContext", но база данных не существует или не содержит сопоставленных таблиц. Используйте "Миграции" для создания базы данных и ее таблиц, например, запустив команду "Обновить базу данных" из консоли диспетчера пакетов.

Когда я запускаю Update-Database, я получаю сообщение:

Нет ожидающих явных миграций.
Применение автоматической миграции: 201310311356014_AutomaticMigration.
Метод запуска семян.

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

Не создает ли EF базу данных SQL Server CE автоматически? Если да, то как мне подключить вручную созданный БД с моим приложением?

Ответ 1

Проблема может быть решена путем добавления строки Connection в файл app.config в конце <configuration> -tag:

  <connectionStrings>
    <add name="DataModelContext"
         providerName="System.Data.SqlServerCe.4.0"
         connectionString="Data Source=C:\Users\sblxxx\Documents\Visual Studio 2012\Projects\Pluralsight\EF5\CodeFirst\db\cfdb.sdf"/>
  </connectionStrings>