我正在使用 a.mdf连接到 adatabase和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 }