C# 用MVC从头开始创建网站,哪个ORM更好,EF还是NHibernate?
我想创建一个网站,有许多用户,显然有大量的数据库,我没有EF或NHibernate的经验,推荐给我什么 EF与.NET和Visual Studio的集成非常好。在VisualStudio中为您提供一个非常好的设计器,并利用LINQ编写易于阅读的查询C# 用MVC从头开始创建网站,哪个ORM更好,EF还是NHibernate?,c#,asp.net-mvc,database,C#,Asp.net Mvc,Database,我想创建一个网站,有许多用户,显然有大量的数据库,我没有EF或NHibernate的经验,推荐给我什么 EF与.NET和Visual Studio的集成非常好。在VisualStudio中为您提供一个非常好的设计器,并利用LINQ编写易于阅读的查询 对我来说,这是一个不需要动脑筋的问题。毫无疑问,我会选择EF4。如果您是第一次使用EF,我建议您选择EF,因为它很容易使用,无需更多配置和隐藏属性……无需额外努力,只需添加对象,您的任务就完成了 但是如果您希望获得更好的性能,请选择NHibernat
对我来说,这是一个不需要动脑筋的问题。毫无疑问,我会选择EF4。如果您是第一次使用EF,我建议您选择EF,因为它很容易使用,无需更多配置和隐藏属性……无需额外努力,只需添加对象,您的任务就完成了
但是如果您希望获得更好的性能,请选择NHibernate。答案取决于您在后端使用的数据库。如果您使用的是任何Microsoft数据库,那么EF就是最好的选择
Oracle还没有支持EF的客户端(即将推出),因此您需要使用NHibernate与Oracle对话,直到他们更新其客户端。我选择NHibernate,因为它允许您比EF更好地调整性能,并且更好地跨不同数据库移植
首次使用ASP.NET MVC时,可以考虑使用。它使用NHibernate。网站上清楚地解释了如何快速入门。
两者都没有 过去一年我一直在使用EF,我遇到的问题不值得这么麻烦 我已经告诉我的同行们这一点——如果我能回到过去,我会使用带有精简API的存储过程将其抽象出来 要么这样,要么使用“轻量级”ORM,如短小精悍或大规模 EF给了我太多的膨胀,关联的复杂性(特别是继承模型),bug从未修复,以及在无状态环境(如MVC)中“更新”实体的问题 我真的不在乎我是否被否决——只想投入我的两分钱。起初我喜欢EF,因为我来自L2SQL背景,所以这是一个简单的过渡。但当我开始在被子底下挖的时候,我发现和他一起工作是多么痛苦 话虽如此,我还没有用过NHibernate,所以我不能对此发表评论,只能评论实体框架 紧贴金属-从长远来看,你会获得更好的性能。在“真实”模型中编写代码-SQL,使用索引,让SQL Server(或Oracle)的引擎做它最擅长的事情 由于LINQ框架的一致性和智能性,IMO(这就是我们在这里所能做的,给出意见),当您有一个非基本模型(大多数人都这样做)时,LINQ实体无法生成足够好的SQL 我的EF4宠物脾气:帖子
和位置
作为*.*
,而你有问题
作为帖子的一种类型,那么就没有办法检索位置
,只检索问题
。您必须立即加载所有帖子
,或使用匿名类型投影。总的来说,迫不及待地加载是非常痛苦的Post
,其中有许多位置
,并且您想要更改现有Post
链接到的位置,那么使用MVC控制器操作很难做到这一点。为了使EF在处理POCO时认为关系已修改,您需要实际将其设置为已修改。但是如果您有POCO,则关系通常是ICollection
,因此您没有这些内置方法。在执行Save
操作时,您将在OSM的内部手动设置实体状态。我最终手动合并了中的实体,基本上是从左到右