0

我在 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=&quot;Data Source=.\SQLEXPRESS;
     AttachDbFilename=|DataDirectory|\TestDB.mdf;
     Integrated Security=True;User Instance=false;
     MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

这里故意在每个连接字符串上缺少开放尖括号,这是由于 SO 的限制。

有什么想法可以解决这个问题吗?

4

1 回答 1

1

我有同样的情况:EF 和角色提供者连接到同一个数据库和两个连接字符串。但是我的 ConnectionStrings 中没有“AttachDBFilename ...”,而是在 RoleManager ConnectionStringDatabase=MyDb和 EF ConnectionStringInitial Catalog=MyDb中。在 SQL Server Management Studio 中,我已将物理数据库附加到对象资源管理器并命名为MyDb. 这行得通。不要问我为什么。关于连接字符串,我处于“让向导做这些事情”的水平。他们以这种方式创建了字符串。

于 2010-03-06T23:34:49.280 回答