ASP.NET MVC希望我将我的SQL Server数据库文件存储在App_Data文件夹中 - 我应该吗?

dev*_*xer 4 sql-server asp.net asp.net-mvc sql-server-2005 sql-server-express

使用SQL Server Express 2005创建新数据库时C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data,默认情况下会存储数据库文件(.mdf和.ldf).

但是,通过我在ASP.NET MVC中看到的教程(例如,Nerd Dinner),将数据库文件保存在ASP.NET项目的App_Data文件夹中似乎是常见的做法.

问题

  1. App_Data文件夹是否有任何意义,或者如果您碰巧使用Visual Studio的设计器来创建新数据库,它是否只是存储数据库文件的便利位置?
  2. 如果我不使用甚至删除App_Data文件夹,会不会有任何负面影响?

更新

有一点我还没有得到.如果您在服务器上有一个生产数据库,为什么你甚至更换这个数据库是什么App_Data文件.在发布新版本的应用程序时,您通常不希望拥有在生产数据库上运行的更新脚本吗?即使是初始部署,我宁愿编写脚本数据库创建脚本而不是物理复制文件.此外,对于SQL Server(Express)数据库,复制还不够.您必须分离数据库以操作文件,然后在完成后重新附加.

所以,我不得不说,App_Data的观点仍然让我感到厌烦.有人可以开导我吗?

Joh*_*n K 5

您可以删除App_Data而不会产生任何负面影响,但如果它存在(通过文件夹名称)在ASP.NET网站内,那么它具有禁止直接链接以下载其内容的特殊网站功能 - 这是一个保护您的数据库免受保护的安全功能即使它存在于网站中,也可以通过网络直接下载(例如通过网络浏览器).但是,您的应用程序仍然可以访问App_Data文件夹中的文件,就像访问其他网站内容一样.

微软称其为:

注意:应用程序文件夹的内容(App_Themes文件夹除外)不会响应Web请求而提供,但可以从应用程序代码访问它.

Microsoft 在此处描述了他们特殊的ASP.NET文件夹结构,包括App_Data.