在EF和SqlRoleProvider之间共享SQLExpress数据库

时间:2010-03-06 20:21:10

标签: entity-framework connection-string roleprovider

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

每个连接字符串上缺少开角括号是故意的,因为SO的限制。

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

1 个答案:

答案 0 :(得分:1)

我有相同的情况:EF和角色提供程序连接到同一个数据库和两个连接字符串。但是我的ConnectionStrings中没有“AttachDBFilename ...”,而是在RoleManager ConnectionString Database=MyDb和EF ConnectionString Initial Catalog=MyDb中。在SQL Server Management Studio中,我将物理Db附加到对象资源管理器并命名为MyDb。这有效。不要问我为什么。关于连接字符串,我处于“让巫师做的事情”的层面上。他们用这种方式创建了字符串。