EF 6.0 Code first Compact Edition: неверная строка подключения или проблемы app.config?

Спросите ваши советы об этом:

Я пытаюсь создать компактную версию БД, впервые она была успешно установлена ​​по умолчанию в dbName (ProjectName.dbContextName). Но я решил определить свое собственное имя и добавил в app.config в секции connectionString строку подключения. После того, как БД не был создан. Отсюда MSDN Сначала используйте код с подключением по соглашению. Я сделал похожую строку подключения:

 <connectionStrings>
    <add name="TestContext"
         providerName="System.Data.SqlServerCe.4.0"
         connectionString="Data Source=TestDb.sdf;"/>
  </connectionStrings>

(имя раздела совпадает с именем класса моего dbcontext.) Просто чтобы быть уверенным перед созданием dbContext:

Database.SetInitializer(new DropCreateDatabaseAlways<TestContext>());

ДБ до сих пор не создан. Что я делаю неправильно? Заранее спасибо.

VahidN, я пытался добавить вызов конструктора базового класса, но не работает. Не понимаю Это должно быть очень легко. И, как упоминалось выше в ссылке выше, если имя строки подключения в разделе конфигурации и имя класса dbContext совпадают - объект без проблем находит свою строку подключения.

Хорошо, отладчик говорит, что conString определен правильно (равно строке в разделе конфигурации), но на самом деле БД не создается - я не могу найти его ни в папке приложений, ни в папках сервера SQL.

2 ответа

Вам необходимо включить полное имя в имя строки подключения. Смотрите здесь.

Что-то вроде этого

<connectionStrings>
    <add name="YourNameSpace.TestContext"
         providerName="System.Data.SqlServerCe.4.0"
         connectionString="Data Source=TestDb.sdf;"/>
</connectionStrings>

О, извините за недостаточную информацию, база данных не была создана, потому что сущности в dbContext были определены как List, а не как dbSet. непреднамеренность (

Другие вопросы по тегам