EF7:连接到本地数据库数据库时出错

时间:2016-04-05 10:33:51

标签: entity-framework asp.net-core localdb

我正在尝试创建一个新的asp.net核心应用程序,该应用程序使用EF7访问本地数据库数据库,我遇到了连接字符串的一些问题。我已经安装了本地数据库服务,我已经创建了几个实例:

PS C:\Users\luisabreu> sqllocaldb info
MSSQLLocalDB
ProjectsV12
ProjectsV13
v11.0

MSSQLLocalDB正在运行v12:

PS C:\Users\luisabreu> sqllocaldb info mssqllocaldb
Name:               MSSQLLocalDB
Version:            12.0.2000.8
Shared name:
Owner:              GRM\luisabreu
Auto-create:        Yes
State:              Running
Last start time:    05/04/2016 08:46:17
Instance pipe name: np:\\.\pipe\LOCALDB#518FD662\tsql\query

这是我传递给EF的连接字符串:

{
  "usersCnnString": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=UsersInfo;Integrated Security=True"
}
是的,我已经尝试过这个了:

"usersCnnString": "Server=(localdb)\\mssqllocaldb;Database=UsersInfo;Trusted_Connection=True"

这是我用来设置ED依赖关系的设置代码:

services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<UsersContext>(options => options.UseSqlServer(Configuration["usersCnnString"]));

每当我尝试访问数据库时,我都会遇到以下错误:

System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. Specified LocalDB instance name is invalid.)

我肯定做错了什么,但是什么?

谢谢! 路易斯

2 个答案:

答案 0 :(得分:2)

嗯,这是更简单的事情......每当你更改ASP.NET Core应用程序的配置时,不要忘记杀死iis express,以便在你重新启动时获得正确的配置数据运行应用程序。问题是当我粘贴路径时:

Server=(localdb)\\mssqllocaldb...

进入json文件,VS 2015自动转义字符串,将其转换为:

Server=(localdb)\\\\mssqllocaldb...

是的,我已经注意到了,但只是在尝试在浏览器上加载应用之后。我纠正了路径,但没有杀死我用来测试我的应用程序的IIS Express实例。因此,错误消息是绝对正确的,因为它仍然使用旧路径(它试图到达在localdb服务器上运行的mssqllocaldb实例)。

再次,愚蠢的错误。希望我的错误将在未来拯救别人30分钟......

答案 1 :(得分:0)

如果我使用带有RC1的VS 2015创建一个包含用户帐户的项目,项目模板会生成如下连接字符串:

{
  "Server=(localdb)\\mssqllocaldb;Database=thedbnamehere;Trusted_Connection=True;MultipleActiveResultSets=true"
}

我会尝试接近它,但也想知道由于某些原因,UsersInfo可能不是有效名称,可能是某些关键字冲突

我注意到vs使用project.json中的“userSecretsId”作为dbname,不确定是否需要,但可能值得尝试