官方使用NHibernate的最简单方法;“ASP.NETMVC3GettingStarted”-辅导的 澄清更新的问题-开始
在我看来,要使ORM正常工作,我们只需两步。 首先添加简单的MovieDBContext代码,如官方使用NHibernate的最简单方法;“ASP.NETMVC3GettingStarted”-辅导的 澄清更新的问题-开始,nhibernate,entity-framework,asp.net-mvc-3,postgresql,Nhibernate,Entity Framework,Asp.net Mvc 3,Postgresql,在我看来,要使ORM正常工作,我们只需两步。 首先添加简单的MovieDBContext代码,如 公共类MovieDBContext:DbContext { 公共DbSet电影{get;set;} } 。。在中的第二个,只需右键单击控制器文件夹,我们就可以自动生成一个MoviesController,它使用实体框架实现CRUD()功能,只需告诉要使用的模型即可。 现在,当使用web应用程序时,我们已经可以从数据库中进行写和读了 对于使用NHibernate而不是使用实体框架的电影模型,最简单(
公共类MovieDBContext:DbContext
{
公共DbSet电影{get;set;}
}
。。在中的第二个,只需右键单击控制器文件夹,我们就可以自动生成一个MoviesController,它使用实体框架实现CRUD()功能,只需告诉要使用的模型即可。现在,当使用web应用程序时,我们已经可以从数据库中进行写和读了 对于使用NHibernate而不是使用实体框架的电影模型,最简单(或最简单)的方法是什么?
澄清最新问题-结束
原始问题(仅适用于其他背景信息):
我正在尝试创建一个使用NHibernate和Postgres的ASP.NETMVC3应用程序。 背景信息 使用Visual Web Developer Express在Windows上进行开发,生产环境应为Linux+Mono 迄今为止行之有效的步骤:
- 使用Npgsql和Postgres作为数据库的ASP.Net动态数据实体Web应用程序。 已在Windows开发计算机上成功运行。
- 尚未使用数据库/模型的ASP.Net MVC 3应用程序: 在Windows开发机器上成功运行,并使用Mono和Nginx部署到Linux生产环境。(仅作为我自己的概念证明,而不是作为公众使用的web应用。)
- 一个ASP.NETMVC3应用程序,其模型使用SQLServerExpress作为数据库。 已在我的Windows开发计算机上成功运行。
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
公共类MovieDBContext:DbContext
{
公共DbSet电影{get;set;}
}
在中,我们使用实体框架自动生成CRUD内容,只需告诉使用哪个模型。
(MoviesController.cs、Create.cshtml、Delete.cshtml、Details.cshtml、Edit.cshtml和Index.cshtml)
所以我已经使用实体框架和sqlserverexpress,但是如何使用NHibernate来实现相同的结果?(不必立即加入postgres,坚持使用SQL Server作为第一步是很好的)(希望具有类似的简单性,但获得结果本身就很好)我发现了很多老东西,以及我如何手动映射东西,但是使用NHibernate for MVC 3实现这一点的最新标准方法是什么 (我发现的最接近的东西是中提到的源代码,但它是64 MB解压的,我有几个“项目没有成功加载”-错误,作者说他使用MVC 2,所以我认为作为一个完整的NHibernate noob,我有点不知所措。) 我认为展示如何做到这一点对其他人也非常有用,因为最初的教程非常容易理解,并且作为MVC 3应用程序开发的官方起点链接(“您的第一个ASP.NET MVC应用程序”)。
因此,我认为这将是一个关于如何将NHibernate与MVC 3结合使用的最新示例。建议,不要挂断教程向您展示的所有自动内容。微软只是想表明,如果你不尝试做任何独特的事情,你可以很容易地开始工作 现在谈谈你的情况。在制作控制器时,您希望将该控制器与您在某处创建的模型类型绑定。使用nHibernate,我认为您将手动创建这些POCO,并且您正在使用多种方法之一通过nHibernate将这些POCO映射到您的数据库 您将无法使用实体框架选项,因为它们取决于框架的功能,以提供有关对象、数据库等的信息。最简单的方法是制作一个控制器,为您提供CRUD选项,或者使用一个空控制器来构建您自己的ActionResults
希望这对你的项目有所帮助,祝你好运。事实上,这些自动化的东西在现实世界的应用程序中还不够有用。我们必须分离关注点,在UI层中使用DataContext不是一个好的实践,因为这种依赖性会导致诸如缺乏测试能力、违反最佳实践等问题。我认为你的项目需要有以下内容
NuGet是您的朋友。下面是一个使用NuGet自动连接依赖项和配置的示例 希望这有帮助
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}