繁体   English   中英

ASP.NET MVC 4 EF6 无法连接到 SQL Server Express 数据库

[英]ASP.NET MVC 4 EF6 cannot connect to SQL Server Express database

当我从 LocalDb 移动到 SQL Server Express 时出现一个奇怪的错误。 这是错误:

此操作需要连接到“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 时它很好,但现在我什至无法连接到我的数据库。

以下是我解决此问题的尝试:

  1. 我把Persist Security Info = True;Trusted_Connection=False; - 仍然产生同样的错误。

  2. 我试图改变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"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM