如何在源控制的Web应用程序中自动签出数据库文件?

时间:2010-04-16 22:57:52

标签: asp.net sql-server database mdf version-control

我正在开发一个ASP.NET Web应用程序,我们是一个小团队(4名学生),我们无法访问专用服务器来托管数据库实例。因此,对于这个Web应用程序,我们决定将数据库文件放在App_Data文件夹中。

问题是我们的项目是源代码控制在TFS上,因此每次打开解决方案并尝试启动Web应用程序时,我们都会得到一个说明数据库是只读的。这是合乎逻辑的,因为数据库文件不会自动签出。

是否有解决方法可以避免每次打开解决方案时手动检出数据库文件?

感谢。

2 个答案:

答案 0 :(得分:1)

永远不要签入MDF文件。您应该使用部署脚本开发项目,该脚本可以创建所需的表和其他数据库对象。切勿直接从VS Server Explorer修改MDF。使用version based approach to database schema

我知道你会说'但很难',但相信我,VS巫师指导你的替代方案要糟糕得多。不仅从团队开发的角度来看,而且从部署的角度来看也是如此。部署v1站点后,您将进行更改并希望部署v1.1或v2。每次,您都将面临同样的困境:您有4个MDF文件,每个团队成员登记一个,部署站点上有1个,并且根本无法对齐模式。你最终会要求像SQL Compare这样的SQL差异工具,但它们需要花费大量的资金,而且在维护SQL模式时它们还远非完美。

此外,将脚本作为您的数据库源也将与所有其他源控制好东西很好地匹配,例如跟踪谁更改了什么以及何时更改。

答案 1 :(得分:0)

如果您能够为Visual Studio安装“Visual Studio Team System Database Edition”附加组件(以前称为“Visual Studio Team Edition for Database Professionals”,以前称为“DBPro”),则可以将当前数据库导入到Visual Studio数据库项目,它可以是整个VS解决方案的一部分。

然后,您可以在Visual Studio中管理架构对象(表,存储过程,权限等),并将您的数据库架构与TFS很好地集成。

它还允许您将VS Project中的架构部署到数据库服务器,自动处理修改而不会导致数据丢失(或者如果数据丢失则失败)。

VS 2008的附加组件位于: http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&displaylang=en