如何在 ASP.NET MVC 应用程序中管理和部署架构(使用 NHibernate)

Posted

技术标签:

【中文标题】如何在 ASP.NET MVC 应用程序中管理和部署架构(使用 NHibernate)【英文标题】:How to Manage and Deploy Schema in ASP.NET MVC Applications (w/ NHibernate) 【发布时间】:2011-04-28 11:52:11 【问题描述】:

对于 ASP.NET MVC3 应用程序,如何将数据库部署到生产环境中,以及如何管理架构更改?

在开发应用程序时,我在 app_data 中看到一个 aspnetmvc.mdf(和 .ldf)文件。这有aspnet._ 表,还有我的表(我在 SQL Server Express 中手工创建的)。这个文件是 10MB,在我看来,我不应该简单地将它上传到我的生产机器上。

我是否应该将架构(和种子数据)更改保留在 .SQL 文件中并(以某种方式)在服务器上运行它们?我应该使用 NHibernate 的方法来自动生成表吗? (如果是,那么 ASP.NET 标准表呢?)

管理此问题的最佳方法是什么?理想情况下,我想要像 LiquiBase 或 Rails 的数据库迁移这样的东西,在那里我可以隔离更改并单独运行它们。但是我从来没有将一个从头开始的 ASP.NET MVC 站点投入生产,所以我不知道该怎么做。

【问题讨论】:

【参考方案1】:

我对 NHibernate 架构更新的看法是 here。

没有一种正确的解决方案,但 SchemaUpdate 可以帮助您完成大约 90% 的工作。对于另外 10%,我目前使用手写 sql 文件(以创建日期命名),但还有其他更复杂的选项(例如 RedGates SqlCompare 或某些版本的 Visual Studio 中内置的数据工具)。

【讨论】:

我不太喜欢 SchemaUpdate 是非破坏性的。但是 +1 因为这使我强烈地转向解决方案。

以上是关于如何在 ASP.NET MVC 应用程序中管理和部署架构(使用 NHibernate)的主要内容,如果未能解决你的问题,请参考以下文章

如何在asp.net mvc 5中批准或拒绝管理员批准的用户端记录

asp.net mvc5 如何控制没有权限的页面不显示

如何在asp.net mvc中使用单独的表管理两种用户?

ASP.NET Core 2.0 MVC 6. 如何管理每个视图的javascript文件?

如何在 ASP.NET Core 5 MVC (.NET 5) 中获取记录的用户数据?

在 ASP.Net MVC5 中管理长时间运行的进程