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. непреднамеренность (