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


当前回答

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

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

其他回答

我犯了这个错误,并找到了一些解决方案:

查看连接字符串,它看起来是有效的。我发现了这篇博客文章,这里的问题是他们使用了集成安全系统。如果您在IIS上运行,您的IIS用户需要访问数据库。

如果您使用实体框架与事务,实体框架自动打开和关闭连接与每个数据库调用。因此,在使用事务时,您试图将事务分散到多个连接上。这提升到MSDTC。

(更多信息请参见参考资料。)

更改我的代码如下固定:

using (DatabaseEntities context = new DatabaseEntities())
{
    context.Connection.Open();
    // the rest
}

对我来说,这只是一个简单的错误:

我使用Amazon EC2,我在连接字符串中使用了我的弹性IP地址,但是当我更改IP地址时,我忘记更新我的连接字符串。

我在这里发布了一个类似的问题,使用托管在亚马逊RDS上的SQL 2012数据库。问题是在连接字符串-我有“应用程序名称”和“应用程序”属性在那里。一旦我把它们拿掉,它就起作用了。

实体框架5和Amazon RDS——“底层提供者在Open上失败了。”

你可以尝试替换元数据:

元= res: / / conString.csdl | res: / / conString.ssdl | res: / * / conString.msl

to:

元数据=因素:/ / * /;

我也面临着同样的问题。现在我已经从连接字符串中删除了用户名和密码。