ASP.NET MVC 4 EF6无法连接SQL Server Express数据库
本文关键字:SQL 连接 Server Express 数据库 NET MVC EF6 ASP | 更新日期: 2023-09-27 18:06:23
当我从LocalDb移动到SQL Server Express时,我有一个奇怪的错误。这是错误:
这个操作需要连接到"主"数据库。不能要创建一个连接到'主'数据库,因为原始的数据库连接已打开,凭据已删除从连接字符串。提供未打开的连接。
当我在上下文初始化时尝试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"/>