У меня странная ошибка при переходе на SQL Server Express с LocalDb. Это ошибка:
Для этой операции требуется подключение к базе данных master. Невозможно создать соединение с «главной» базой данных, поскольку исходное соединение с базой данных было открыто, а учетные данные были удалены из строки соединения. Поставьте неоткрытое соединение.
Эта ошибка возникает, когда я пытался CreateDatabaseIfNotExists
при инициализации контекста.
Вот моя строка подключения:
<add name="DefaultConnection"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=AlvinCMS;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
Вот мой контекст:
public class AlvinCMSMigrationDBContext : DbContext
{
public AlvinCMSMigrationDBContext() : base("DefaultConnection")
{
Database.SetInitializer<AlvinCMSMigrationDBContext>(new CreateDatabaseIfNotExists<AlvinCMSMigrationDBContext>());
}
Я запускаю базу данных на global.asax
:
protected void Application_Start()
{
//Check And Init Database
Alvin_CMS.App_Start.DatabaseConfig.Initialize();
И, наконец, это мой код инициализации:
public static void Initialize()
{
Alvin_CMS.Models.AlvinCMSMigrationDBContext migrationDB = new Models.AlvinCMSMigrationDBContext();
try
{
if (!migrationDB.Database.Exists())
{
migrationDB.Database.Initialize(false); //ERROR HERE!
AlvinCMSExtension.Models.AccountDBContext accountDB = new AlvinCMSExtension.Models.AccountDBContext();
accountDB.Database.Initialize(false);
SetDefaultValue(migrationDB);
}
migrationDB.Database.Initialize(false);
}
catch (Exception e)
{
migrationDB.Database.Delete();
AlvinCMSExtension.Helper.Log(e);
}
}
Я не знаю, что не так с моим кодом, потому что все было хорошо, когда я использовал LocalDb, но теперь я не могу даже подключиться к своей базе данных.
Вот мои попытки решить эту проблему:
Ставлю
Persist Security Info = True;Trusted_Connection=False;
- все равно выдает ту же ошибку.Я пытался изменить
Database.SetInitializer<AlvinCMSMigrationDBContext>(null);
Но мне нужно создать базу данных, если она не существует, так что это не исправление для меня.