附加的SQL Express DB导致问题

时间:2011-10-24 20:05:44

标签: asp.net-mvc-3 sql-server-express

我被要求在VS 2010中创建一个MVC Web应用程序,并被指示为我的数据使用SQL Express数据库。我使用EF Code-First来创建和管理我的数据。数据库是在VS2010中创建的,并通过web.config中的“AttachDBFilename”附加。

我以前在使用SQL CE时没有遇到任何问题,但附加的SQL Express DB引起了奇怪的问题。

首先,当我尝试部署应用程序时,它失败并告诉我它无法复制database.mdf,因为它正被另一个进程使用。我没有在VS2010中打开数据库,也没有打开SSMS。当然程序代码访问它 - 是否有某些原因连接将保持打开状态?我正在使用脚手架中的样板代码。

我应该提一下,我使用ProjectInitializer.cs来创建示例数据。它暂时在每次发布时运行,因为我正在测试相当多。

我遇到的另一个问题是,如果删除数据库,则无法重新创建它。它说我的Windows帐户无法访问它尝试创建的(现在不存在的)数据库。我确实必须使用新名称创建一个新数据库,因为之前创建的任何内容(使用该数据库名称)都会失败。

我认为某些遗留信息会在某处不同步,但我不知道它是什么。我已经关闭了VS 2010中文件的所有连接,删除了通过VS2010找到的文件以及我在app_data目录中看到的任何物理文件。

任何帮助或建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

关闭Web服务器(Cassini,IIS,IIS Express),然后重试。如果Web进程仍在引用该文件,则该文件可以保持锁定状态。此外,加载的EF上下文将保留db名称。确保Visual Studio浏览器仍未在托盘中运行。