Я пытаюсь выполнить обновление базы данных в первой базе данных кода EF6. Все, что я сделал, это сборка моих моделей и datacontext, запуск enable-migrations и добавление-перенастройка InitialCreate. Все это хорошо работало.EF6 Code First: Login Не удалось обновить базу данных
Но база данных обновлений не работает двумя разными способами.
Некоторое время я работал, но он создавал файлы базы данных (т. Е. Файлы MDF и журналы) в каталоге c: \ Users \. Я не хочу их там. Я хочу, чтобы они были в папке App_Data на веб-сайте MVC, который я создаю (схема базы данных находится в отдельной библиотеке DLL библиотеки классов, поскольку она должна быть доступна как для приложения MVC, так и для импорта и массирования данных в консольном приложении).
Я попытался изменить расположение файлов базы данных, изменив строку подключения, но мои изменения либо игнорировались (т. Е. Файлы базы данных сохраняются в c: \ Users \), либо я столкнулся со второй ошибкой, «Невозможно открыть базу данных ... запросить логин ... бла-бла-бла». Тем не менее я мог открыть базу данных в SSMS, и моя учетная запись пользователя Windows является владельцем базы данных.
Для удовольствия я попытался удалить и создать базу данных из SSMS. Это пошло нормально ... но команда update-database >> still < < не может войти в систему.
Любая помощь в распутывании этого беспорядка будет очень признательна!
Конструктор для моего DataContext:
public CampaignDbContext()
: base("Council2015", throwIfV1Schema: false)
{
Database.SetInitializer<CampaignDbContext>(null);
}
Строка соединения в библиотеке классов app.config:
<connectionStrings>
<add name="Council2015" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=E:\\Programming\\Council2015\\Council2015\\App_Data\\Council2015.mdf;Integrated Security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
</connectionStrings>
Самое недавнее исключение брошенной обновление-базы данных:
Applying explicit migrations: [201503180506326_InitialCreate].
Applying explicit migration: 201503180506326_InitialCreate.
System.Data.SqlClient.SqlException (0x80131904): Cannot open database "Council2015" requested by the login. The login failed.
Login failed for user 'KENSEI\Mark'.
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
...
Cannot open database "Council2015" requested by the login. The login failed.
Login failed for user 'KENSEI\Mark'.
Дополнительная информация:
Есть что-то, что я, очевидно, не понимаю о строках подключения. Я могу заставить базу данных обновления работать, если я дам строке подключения новое имя (например, Council2015a) и изменим соответствующий параметр конструктора в CampaignDbContext. Но он создает новую базу данных - в разделе c: \ Users \, где я не хочу этого, вместо привязки к существующему файлу базы данных.
Кроме того, если вы удалите файлы базы данных или переместите их (и обновите параметр файла прикрепления), снова произойдет тот же самый сбой входа.
Так что-то где-то запоминает ранее созданные базы данных и «отказывается» отпустить.
Все это является массово контр-интуитивно понятным (в том числе, почему база данных называется именем параметра name в строке соединения).
Я использую интегрированную защиту, так что это не ответ. –
@Jagadesh Я решил проблему, вставив мой пароль вместо '*****' при копировании строки подключения – Lobato