为什么通过实体框架6从localdb(MssqlLocalDb)读取数据只能通过命名管道工作

本文关键字:数据 管道 工作 管道工 读取 MssqlLocalDb 框架 实体 localdb 为什么 | 更新日期: 2023-09-27 18:24:40

正如标题所说:如果我在ASP.NET MVC网站中创建一个ADO.NET实体数据模型,并通过数据库实例设置连接,它会显示

测试连接成功

在调试读取表的代码时,它会给我一个错误

基础连接无法打开

如果我更改这个(实例)的连接字符串

<add name="GameDbEntities" 
     connectionString="metadata=res://*/Models.GameDb.csdl|res://*/Models.GameDb.ssdl|res://*/Models.GameDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(localdb)'mssqllocaldb;initial catalog=GameDb;user id=codadmin;password=******;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

到此(命名管道)

<add name="GameDbEntities" 
     connectionString="metadata=res://*/Models.GameDb.csdl|res://*/Models.GameDb.ssdl|res://*/Models.GameDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=np:''.'pipe'LOCALDB#D6BBC602'tsql'query;initial catalog=GameDb;user id=codadmin;password=******;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

它按预期工作,从数据库读取数据

我不理解这一点,因为如果我创建一个wpf应用程序,它就可以通过实例

为什么通过实体框架6从localdb(MssqlLocalDb)读取数据只能通过命名管道工作

开箱即用

我假设您使用的是SQL Server Express。问题是,使用此SQL版本时,默认情况下会禁用TCP/IP连接。

激活它的几个步骤:

  • 转到SQL Server配置管理器
  • SQL Server网络配置
  • 协议
  • 启用TCP/IP

更多信息可以在这里找到。