我在SQLExpress 2008中有一个数据库,我通过EF4连接访问。它还包含网站的ASP.Net角色提供程序表。在web.config中有两个指向同一数据库的独立连接字符串。在调试数据库时,我收到以下错误:
无法打开物理文件 “d:\ TFS \ MAIN \来源\ TestWeb \ TestWeb \ App_Data文件\ TestDB.mdf”。 操作系统错误32:“32(失败 检索此错误的文本。 原因:15105)“。试图附加 一个自动命名的文件数据库 d:\ TFS \ MAIN \来源\ 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的限制。
我有什么想法可以解决这个问题吗?
答案 0 :(得分:1)
我有相同的情况:EF和角色提供程序连接到同一个数据库和两个连接字符串。但是我的ConnectionStrings中没有“AttachDBFilename ...”,而是在RoleManager ConnectionString Database=MyDb
和EF ConnectionString Initial Catalog=MyDb
中。在SQL Server Management Studio中,我将物理Db附加到对象资源管理器并命名为MyDb
。这有效。不要问我为什么。关于连接字符串,我处于“让巫师做的事情”的层面上。他们用这种方式创建了字符串。