ASP.NET MVC 4 EF6 无法连接到 SQL Server Express 数据库
Posted
技术标签:
【中文标题】ASP.NET MVC 4 EF6 无法连接到 SQL Server Express 数据库【英文标题】:ASP.NET MVC 4 EF6 cannot connect to SQL Server Express database 【发布时间】:2016-09-10 07:46:15 【问题描述】:当我从 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);
但如果不存在我需要创建数据库,所以这不是我的解决方案
【问题讨论】:
你用来连接的用户应该有管理员权限,尝试为这个用户分配以下角色dbcreator和sysadmin并尝试 即使初始化器为 null,如果数据库不存在,您也可以创建它。 Trusted_Connection=False 不会从您的连接字符串中删除凭据,但是您很可能没有提供正确的凭据,请尝试使用 Trusted_Connection=True,因此将使用 Windows 身份验证。 【参考方案1】:您可以使用connection string
,如下所示。
<add name="DefaultConnection" connectionString="Server=localhost; Database=
AlvinCMS;Trusted_Connection=True;" providerName="System.Data.SqlClient" />
【讨论】:
【参考方案2】:在我的例子中,“StoreMan”是数据库名称。用你自己的替换它。
<add name="StoreMan" providerName="System.Data.SqlClient" connectionString="Server=localhost; Database=StoreMan;Trusted_Connection=True;Integrated Security=True;MultipleActiveResultSets=True"/>
【讨论】:
以上是关于ASP.NET MVC 4 EF6 无法连接到 SQL Server Express 数据库的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET MVC 项目中无法使用实体框架连接到 Oracle 数据库
如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统--工作流演示截图
ASP.NET Core MVC:使用 SQL Server 身份验证连接到现有数据库
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(57)-插件---ueditor使用