【发布时间】:2011-10-19 12:51:20
【问题描述】:
澄清更新问题 - 开始
在official MVC 3 Getting Started-tutorial 中,在我看来,要让 ORM 正常工作,我们要做的只是两个步骤。
首先添加简单的 MovieDBContext 代码,如 end of part 4 中所述。
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
.. 和 second 在beginning of part 5 中,只需右键单击 Controllers 文件夹,我们可以通过简单地告诉使用哪个型号。
现在,当使用 web 应用程序时,我们已经可以从数据库中读写了。
使用 NHibernate 而不是使用实体框架为我们的 Movie-Model 完成这项工作的最简单(或简单)方法是什么?
澄清更新问题 - 结束
原始问题(仅用于附加背景信息):
我正在尝试创建一个使用 NHibernate 和 Postgres 的 ASP.Net MVC 3 应用程序。
背景资料
在 Windows 上使用 Visual Web Developer Express 进行开发,生产环境将/应该是 Linux+Mono。
到目前为止已经奏效的步骤:
- 使用 Npgsql 和 Postgres 作为数据库的 ASP.Net 动态数据实体 Web 应用程序。 在Windows开发机上成功运行。 (Following this tutorial)
- 尚未使用数据库/模型的 ASP.Net MVC 3 应用程序: 在 Windows 开发机上成功运行,并使用 Mono 和 Nginx 部署到 Linux 生产环境。 (仅作为我自己的概念证明,而不是作为公众使用的网络应用程序。)
- 一个 ASP.Net MVC 3 应用程序,其模型使用 SQL Server Express 作为数据库。 在我的 Windows 开发机器上成功运行。 (Following the MVC 3 Getting Started-tutorial)
问题
到目前为止,我设法让 Postgres 与“动态数据实体 Web 应用程序”一起工作,但使用 MVC 3 Web 应用程序时,我一直不知道从哪里开始/如何开始。对于最后提到的 MVC-3-Movie-Webapp,我想使用 NHibernate 和 Npgsql(自 Mono doesn't support Entity Framework 以来的 NHibernate)将数据库从 SQL Server Express 切换到 Postgres。
当您查看 end of part 4 时,会看到简单的 MovieDBContext 代码
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
在beginning of part 5 中,我们通过简单地告诉要使用哪个模型来使用实体框架自动生成 CRUD-stuff。 (MoviesController.cs、Create.cshtml、Delete.cshtml、Details.cshtml、Edit.cshtml 和 Index.cshtml)
所以我可以使用 Entity Framework 和 SQL Server Express,但是如何通过使用 NHibernate 来获得相同的结果? (不必立即使用 postgres,坚持使用 SQL-Server 作为第一步就可以了)(希望具有类似的简单性,但获得结果本身会很棒)
我发现了很多旧的东西以及如何手动映射事物,但是使用 NHibernate for MVC 3 实现这一点的最新标准方法是什么?
(我找到的最接近的东西是this thread 中提到的源代码,但解压后是 64 MB 我收到了几个“项目未成功加载”的错误,作者说他使用的是 MVC 2,所以我觉得有点过头了我是一个完整的 NHibernate 菜鸟。)
我认为展示这是如何完成的对其他人也非常有用,因为原始教程非常容易理解,并且链接为 http://www.asp.net/mvc 上 MVC 3 应用程序开发的官方起点(“你的第一个ASP.NET MVC 应用程序”)。 所以我认为这将是一个关于如何将 NHibernate 与 MVC 3 一起使用的最新示例。
【问题讨论】:
标签: nhibernate entity-framework asp.net-mvc-3 postgresql