我使用。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上失败


当前回答

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

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

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

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

其他回答

我通过重置IIS摆脱了这个问题,但仍然在连接字符串中使用集成身份验证。

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

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

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

我有一个类似的问题:在我的测试用例执行中,我总是得到这个错误。我发现,我的“分布式事务服务”没有启动(运行:services。启动“分布式事务服务”(最好设置为自动启动))。在我这么做之后,它就像魔法一样有效……

在IIS中将应用程序池身份设置为服务帐户用户或管理员帐户或有权限对该数据库进行操作的蚂蚁帐户。

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

在IIS:

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