我在SQLExpress 2008中有一个通过EF4连接访问的数据库。它还包含网站的ASP.Net角色提供程序表。在web.config中,有两个单独的连接字符串指向同一个数据库。在调试数据库时,我得到以下错误:
无法打开物理文件"D:\TFS\Main\Source\TestWeb\TestWeb\App_Data\TestDB.mdf".的
操作系统错误32:“32(无法检索此错误的文本。原因: 15105)”。为文件D:\TFS\Main\Source\TestWeb\TestWeb\App_Data\TestDB.mdf附加自动命名数据库的尝试失败.存在同名的数据库,或者无法打开指定的文件,或者位于UNC共享上。
我假设这意味着两个不同的连接字符串不能同时附加到SQLExpress数据库?
以下是连接字符串:
<add name="SqlRoleManagerConnection"
connectionString="data source=.\SQLEXPRESS;
Integrated Security=true;AttachDBFilename=|DataDirectory|TestDB.mdf;
User Instance=false;MultipleActiveResultSets=True"/>
<add name="TestDBEntities"
connectionString="metadata=res://*/TestDB.csdl|res://*/TestDB.ssdl|res://*/TestDB.msl;
provider=System.Data.SqlClient;
provider connection string="Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\TestDB.mdf;
Integrated Security=True;User Instance=false;
MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />每个连接线上缺少的开角括号在这里是故意的,是因为SO的限制。
有什么办法能让我避开这件事吗?
发布于 2010-03-06 23:34:49
我有同样的情况: EF和角色提供程序连接到同一个数据库以及两个连接字符串。但我没有“AttachDBFilename.”在我的ConnectionStrings中,而是在RoleManager ConnectionString Database=MyDb和EF ConnectionString Initial Catalog=MyDb中。在中,我将物理Db附加到对象资源管理器并命名为MyDb。这个很管用。别问我为什么。关于连接字符串,我所处的级别是“让向导来做事情”。他们用这种方式创造了字符串。
https://stackoverflow.com/questions/2393993
复制相似问题