在official MVC 3 Getting Started-tutorial中我觉得我们要做的就是让ORM正常工作是两步。
首先添加简单的MovieDBContext代码,如end of part 4所述..
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
beginning of part 5中的..和 second ,只需右键单击Controllers文件夹,我们就可以自动生成实现CRUD()的MoviesController - 使用Entity Framework的功能只是告诉使用哪种型号 现在,在使用Web应用程序时,我们已经可以从数据库中进行编写和读取。
使用Visual Web Developer Express在Windows上完成开发,生产环境将是/应该是Linux + Mono。
到目前为止已经奏效的步骤:
到目前为止,我设法让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中,我们使用Entity Framework自动生成CRUD-stuff,只需告诉使用哪个Model。 (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一起使用的最新例子。
答案 0 :(得分:1)
实际上,那些自动化的东西在现实世界的应用程序中没有足够的帮助。我们必须分开关注点并在UI层中使用DataContext不是一个好习惯,因为这种依赖性会导致缺乏测试能力,违反最佳实践等问题。我认为您需要对项目进行以下操作
有用的参考资料:
答案 1 :(得分:1)
NuGet是你的朋友。这是good example使用NuGet自动连接您的依赖关系和配置。
希望这有帮助。
答案 2 :(得分:0)
建议,不要挂断教程向您展示的所有自动内容。微软只是想表明,如果你不尝试做任何独特的事情,你就可以很容易地开始工作。
现在适合您的情况。在制作控制器时,您希望将控制器与您在某处创建的模型绑定。使用nHibernate,我认为你将手动创建这些POCO,并且你正在使用多种方法之一将这些POCO通过nHibernate映射到你的数据库。
您将无法使用实体框架选项,因为它们依赖于框架的功能来提供有关对象,数据库等的信息。最简单的事情就是创建一个控制器,它可以为您提供CRUD的选项或使用空控制器来构建自己的ActionResults。
希望这对你的项目有所帮助。