Entity Framework 连接本地数据库

9
我正在学习 pluralsight 的 ASP.NET MVC 4 基础课程,但是无法连接到我的数据库。下面是我所遇到的错误信息:
“从数据库获取提供程序信息时发生错误。这可能是由于 Entity Framework 使用了错误的连接字符串引起的,请检查详细信息并确保连接字符串正确。”
我的电脑上已安装 Visual Studio 2013 专业版和 SQL Server 2012。在安装 SQL Server 时,我在计算机上创建了一个名为“ABC”的服务器。
我还单独安装了 sql localdb 11.0,但似乎 VS 找不到 localDb 连接。当我检查 Server Explorer -> 添加连接时,在服务器名称列表下只显示“ABC”。
以下是连接字符串。
我也尝试使用“Data Source = ABC;...”,但也无法正常工作。
更新:
以下是我的连接字符串。
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-eManager.Web-20141223223418;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-eManager.Web-2014122322341‌​8.mdf" providerName="System.Data.SqlClient" />

你是否查看了webconfig文件以验证连接字符串是否正确? - Chris
这是连接字符串。<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-eManager.Web-20141223223418;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-eManager.Web-20141223223418.mdf" providerName="System.Data.SqlClient" /> - tooold
我也尝试使用“Data Source = ABC; ....”,但它也不起作用。 - tooold
请查看连接字符串中的AttachDBFilename=|DataDirectory|\aspnet-eManager.Web-2014122322341‌​8.mdf。您的应用程序正在尝试连接到该位置的SQL数据库文件。您实际上是否在该位置拥有此mdf文件? - failedprogramming
你尝试过@failedprogramming的最后建议吗?另外,你可以尝试使用Data Source=.\ABC或者只是Data Source=. - ocuenca
显示剩余6条评论
3个回答

8

您可以尝试以下步骤:

  1. 在服务器资源管理器中,右键单击,选择添加连接
  2. 输入(localdb)\v11.0作为服务器名称
  3. 选择您的数据库并按连接
  4. 右键单击新连接上的属性
  5. 将该连接字符串用于默认连接

即:

<add name="DefaultConnection" connectionString="<Paste-connection-string-here>" providerName="System.Data.SqlClient" />

如果这不起作用,让我们尝试从命令行启动

  1. 打开命令提示符
  2. 运行 SqlLocalDB.exe start v11.0

按照原来的步骤进行操作,将命名管道作为服务器名称使用


如果这不起作用,让我们尝试通过命名管道连接

  1. 打开命令提示符
  2. 运行 SqlLocalDB.exe info v11.0
  3. 复制以np:...开头的实例管道名称

按照原来的步骤进行操作,将命名管道作为服务器名称使用

例如:

enter image description here


谢谢Saruman。因为我正在使用EF Code First,所以还没有数据库,我认为EF会为我创建数据库。当我使用你的方法1时,在输入“(localdb)\v11.0”后,在“选择或输入数据库名称”下,我找到了四个数据库,它们是:master、model、msdb、tempdb。如果我选择master,则连接字符串为“Data Source=(localdb)\v11.0;Integrated Security=True”。当我使用方法2时,在第2步后没有显示命名管道。当我使用方法3时,我得到了与你相似的服务器名称,但仍然给我类似的错误信息。 - tooold
@tooold 嗯,我想我误导了你。 - TheGeneral

7
运行以下命令以确保本地数据库的版本: sqllocaldb info sqllocaldb info command result 所以在我的情况下,版本是MSSQLLocalDB,那么连接字符串将如下所示: <add name="DefaultConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=IdentityManagerDB;Integrated Security=True" providerName="System.Data.SqlClient" />

0
补充一下TheGeneral的观点 - 使用SQL Server对象查看器,直接在“SQL Server”对象下方查看。您会看到连接名称类似于“(localDB)\ProjectsV13”,手动输入该名称到连接框中,然后您就可以浏览服务器以找到要使用的数据库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接