我使用。mdf来连接数据库和entityClient。现在我想改变连接字符串,这样就不会有.mdf文件了。

下面的connectionString是否正确?

<connectionStrings>
   <!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />-->
   <add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

因为我总是得到错误:

基础提供程序在Open上失败


当前回答

我得到这个错误时调用异步EF方法从同步主控制台(等待被跳过)。

因为异步打开连接是针对已经处理的数据上下文。

解决方法:正确调用异步EF方法

其他回答

我有这个问题,因为应用程序池登录这个应用程序正在运行下已经改变。

在IIS:

通过单击站点并进入基本设置来查找应用程序池。 进入应用程序池。 单击站点的应用程序池。 单击高级设置。 在“身份”中输入帐号登录名和密码。 重新启动站点并重试。

这只是常见问题。就连我也遇到过这个问题。在配置了Windows身份验证的开发机器上,它可以完美地工作:

<add name="ShoppingCartAdminEntities" connectionString="metadata=res://*/ShoppingCartAPIModel.csdl|res://*/ShoppingCartAPIModel.ssdl|res://*/ShoppingCartAPIModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQlExpress;initial catalog=ShoppingCartAdmin;Integrated Security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

在IIS中使用相同的配置后,我得到了以下错误:

基础提供程序在Open上失败

解决了改变配置文件中的connectionString:

<add name="MyEntities" connectionString="metadata=res://*/ShoppingCartAPIModel.csdl|res://*/ShoppingCartAPIModel.ssdl|res://*/ShoppingCartAPIModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MACHINE_Name\SQlExpress;initial catalog=ShoppingCartAdmin;persist security info=True;user id=sa;password=notmyrealpassword;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

其他常见错误包括:

数据库服务可能停止 数据源属性指向具有Windows身份验证并托管在IIS中的本地数据库 用户名和密码可能错误。

如果你碰巧在ASP上得到这个错误。NET web应用程序,除了上面提到的其他事情,检查以下内容:

数据库用户安全权限(允许用户访问数据库。 检查IIS中的应用程序池,确保它是允许访问数据库的正确应用程序池。

我有这个错误突然发生在我们的一个网站上。在我的例子中,结果是SQL用户的密码过期了!在SQL Server Management Studio中取消密码过期框是有效的!

您应该查看innerException,以了解抛出的内部原因 错误。

在我的例子中,最初的错误是:

无法打开物理文件“D:\Projects2\xCU\xCU\App_Data\xCUData_log.ldf”。操作系统错误5:“5(访问被拒绝。)”。 试图为文件D:\Projects2\xCU\xCU\App_Data\xCUData附加一个自动命名的数据库。mdf失败了。存在同名数据库、无法打开指定文件或位于UNC共享上。

这一问题通过赋予当前用户使用文件属性访问相关MDF和LDF文件的完全权限来解决。