我正在使用.mdf来连接到database和entityClient。现在,我想更改连接字符串,以便没有.mdf文件。
.mdf
database
entityClient
以下connectionString正确吗?
connectionString
<connectionStrings> <!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" 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="Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
因为我总是收到错误:
基础提供程序在打开时失败
我遇到此错误,找到了一些解决方案:
查看您的连接字符串,它看起来有效。我发现了此博客文章,这里的问题是他们正在使用集成安全性。如果您在IIS上运行,则IIS用户需要访问数据库。
如果您将Entity Framework 与Transactions一起使用,则Entity Framework会自动打开和关闭每个数据库调用的连接。因此,在使用事务时,您尝试将事务分布到多个连接上。这将提升为MSDTC。
(有关更多信息,请参见此参考。)
将我的代码更改为以下内容可以修复它:
using (DatabaseEntities context = new DatabaseEntities()) { context.Connection.Open(); // the rest }