ASP.NET MVC 4 EF6 无法连接到 SQL Server Express 数据库
ASP.NET MVC 4 EF6 cannot connect to SQL Server Express database
当我从 LocalDb 移动到 SQL Server Express 时出现奇怪的错误。这是错误:
This operation requires a connection to the 'master' database. Unable
to create a connection to the 'master' database because the original
database connection has been opened and credentials have been removed
from the connection string. Supply an unopened connection.
当我尝试 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);
但是如果不存在我需要创建数据库,所以这对我来说不是一个修复方法
您可以使用 connection string
,如下所示。
<add name="DefaultConnection" connectionString="Server=localhost; Database=
AlvinCMS;Trusted_Connection=True;" providerName="System.Data.SqlClient" />
在我的例子中,"StoreMan" 是数据库名称。换成你自己的。
<add name="StoreMan" providerName="System.Data.SqlClient" connectionString="Server=localhost; Database=StoreMan;Trusted_Connection=True;Integrated Security=True;MultipleActiveResultSets=True"/>
当我从 LocalDb 移动到 SQL Server Express 时出现奇怪的错误。这是错误:
This operation requires a connection to the 'master' database. Unable to create a connection to the 'master' database because the original database connection has been opened and credentials have been removed from the connection string. Supply an unopened connection.
当我尝试 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);
但是如果不存在我需要创建数据库,所以这对我来说不是一个修复方法
您可以使用 connection string
,如下所示。
<add name="DefaultConnection" connectionString="Server=localhost; Database=
AlvinCMS;Trusted_Connection=True;" providerName="System.Data.SqlClient" />
在我的例子中,"StoreMan" 是数据库名称。换成你自己的。
<add name="StoreMan" providerName="System.Data.SqlClient" connectionString="Server=localhost; Database=StoreMan;Trusted_Connection=True;Integrated Security=True;MultipleActiveResultSets=True"/>