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


当前回答

我在网上搜索这个问题。我在连接字符串中输入了错误的名称,请检查web.config中的连接字符串。我有name="AppTest",但它应该是name="App"。

在我的AppTestContext.cs文件中我有:

public AppTestContext() : this("App") { }

错误的连接字符串:

<add connectionString="Data Source=127.0.0.1;Initial Catalog=AppTest;Integrated Security=SSPI;MultipleActiveResultSets=True" name="AppTest" providerName="System.Data.SqlClient" />

右连接字符串:

<add connectionString="Data Source=127.0.0.1;Initial Catalog=AppTest;Integrated Security=SSPI;MultipleActiveResultSets=True" name="App" providerName="System.Data.SqlClient" />

其他回答

如果还原数据库时用户已经存在,且模式不同,导致无法分配正确的权限,也会发生这种情况。

要纠正此运行:

USE your_database
EXEC sp_change_users_login 'Auto_Fix', 'user', NULL, 'cf'
GO
EXEC sp_change_users_login 'update_one', 'user', 'user'
GO

没有一个答案对我有用

我认为我们中的一些人都会犯愚蠢的错误,失败有100种方式……

我的问题是新项目,我在另一个项目中设置了所有的配置,但调用者是一个Web Api项目,其中我必须在Web Api项目中复制相同的连接字符串。

我认为这很疯狂,因为我甚至没有从web api中更新dbcontext或任何东西。

否则,类库将试图查找一个名为

TokenApi.Core.CalContext   

其中我的项目名为TokenApi。Core和CalContext是连接字符串的名称和文件名

我有一个类似的错误与内部异常如下:

操作对于事务的状态无效

我可以通过启用DTC安全设置来解决这个问题。

转到DTC的属性,在安全选项卡下,检查以下内容

网络DTC接入 允许RemoteClients 事务管理器通信 允许入站 允许出站

几天前我也遇到了同样的问题,在连接字符串中使用“Integrated Security=True;”,你需要在“localsystem”下运行应用程序池标识。当然,不建议这样做,但对于测试来说,它可以完成工作。

这是在iis7中更改身份的方法: http://www.iis.net/learn/manage/configuring-security/application-pool-identities

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