Код Entity Framework сначала не создает базу данных - PullRequest
11 голосов
/ 07 октября 2010

Я создал класс контекста БД и добавил строку соединения в мой файл web.config, как указано в Скотте Гатри, разработка кода с Entity Framework 4 Я запускаю его из метода испытаний.Я получил несколько ошибок базы данных при выполнении тестов, но когда я, наконец, очистил классы, чтобы тест прошел успешно, в папке App_data базы данных у меня все еще не было.но все еще нет файла sdf.Кто-нибудь знает, что я делаю не так?

Ответы [ 4 ]

23 голосов
/ 03 февраля 2011

Чтобы база данных создавалась автоматически, имя строки подключения должно быть названо точно так же, как имя подкласса DbContext (с пространством имен).

Например.Скажем, ваш класс БД выглядит так:

namespace MyNamespace
{
    public class FooDb : DbContext
    {    
        public DbSet<XXX> ABC{ get; set; }
    }
}

Ваша строка подключения должна выглядеть так:

  <connectionStrings>
    <add name="MyNamespace.FooDb" connectionString="Data Source=|DataDirectory|MyNamespace.FooDb.sdf" providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>
3 голосов
/ 09 июля 2011

Проверка SQL Server Management Studio ->. \ Sqlexpress

Вот где CF помещает все мои базы данных, когда я не указываю строку подключения.

2 голосов
/ 18 июля 2011

См. Здесь для автоматического создания .sdf с EF 4.1 и пакетом SQL CE NuGet (или, очевидно, новым проектом MVC 3):

http://www.goatly.net/2011/6/27/entity-framework-code-first-the-path-is-not-valid-check-the-directory-for-the-database.aspx

Короткая история: Создайте пустую папку App_Data - sdf создается автоматически, но только если папка, в которую он входит, присутствует.

0 голосов
/ 02 августа 2015

Убедитесь, что ваш dbcontext использует правильную строку подключения. Что-то похожее на это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...