在EF 6.2.0中 Build 与SQL Server的连接时发生与网络相关或特定于实例的错误

我使用 Entity Framework 6.2.0 与asp.net MVC代码优先方法来做一个示例应用程序 .

我已成功启用迁移和更新数据库 . 因此, database Vidly.Models.ApplicationDbContext.mdf 已在 App_Data 文件夹中的解决方案资源管理器中创建 .

我在我的Models文件夹中声明了一个类,如下所示:

public class ApplicationDbContext : DbContext
{
    public DbSet<Customer> Customers { get; set; }
}

在我的 Web.Config 文件中,我添加了如下连接字符串:

<connectionStrings>
    <add name="ApplicationDbContext"  connectionString="Data Source=.;Initial Catalog=Vidly.Models.ApplicationDbContext;Integrated Security=true;" providerName="System.Data.SqlClient"/>
  </connectionStrings>

但是,当我启动应用程序时,我收到以下异常:

System.Data.SqlClient.SqlException:'与SQL Server Build 连接时发生与网络相关或特定于实例的错误 . 服务器未找到或无法访问 . 验证实例名称是否正确,以及SQL Server是否配置为允许远程连接 . (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)'

我在stackoverflow上查了类似的异常,但无法弄清楚出了什么问题 . 有人可以告诉我这里有什么问题吗?谢谢 .

回答(2)

2 years ago

您已在 App_Data 文件夹中创建数据库,但您尝试访问该SQL Server .

试试这个

<connectionstrings>
        <add name="ApplicationDbContext"  connectionstring="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Vidly.Models.ApplicationDbContext.mdf;Integrated Security=True;User Instance=True  " providername="System.Data.SqlClient" />
</connectionstrings>

2 years ago

我看到这是 NOT 你的具体情况(但它与你所遇到的例外情况有关 - 所以为了完整起见添加了这个答案)

我有同样的错误,问题的原因是我忘了将 providerName 添加到连接字符串...

(在我的例子中 - 来自Azure门户的coppied sql字符串,在 Web.config 文件中手动创建了 connectionString 参数,忘了添加providerName参数,所以这样的错误并不难......)

因此,如果您遇到此类异常,则应检查连接字符串是否正确/是否缺少提供程序名称 .