Entity Framework 和NHibernate的区别

今天在Boy's (小气的神) BLOG上看到一篇精彩的文章 Astoria to SQLite to Entity Framework to 建立你的ORM观念 .文章说到了很多精彩的内容,从SQLite for ADO.NET 2.0 Data Provider 到 实体框架EF, 还有ORM的概念,列出了ORM的完整视图

介绍了ORM的四个方向,即自上而下(Top-down),自下而上(Bottom-up),从里到外(Inside-out),从外向里(Outside-in)。 

从个人感受上看,NHibernate显然是从上而下(Top-down)的方式,天然的POCO支持就是最好的佐证。而ADO.NET Entity Framework目前v1版本,应该是从下而上的方式Bottom-up),ADO.NET Entity Data Model Wizard就是最好的佐证。Entity Framework v2支持POCO之后也就能实现垂直双方向的支持,但这如我后面所说,还不够。 至于从里到外(Inside-out),从外向里(Outside-in)是真正显示ORM工具或E/R模型编程模型威力的地方,因为99%的现实世界,以及数据库都不是同步也无法保持同步的,那么提供从里到外,从外向里两个方向的支持是非常重要的。 其实ORM和DP的存在就是要实现这两个方向的能力和支持,否则就没有存在的必要,因为自上而下(Top-down)和自下而上(Bottom-up)两种方式由来已久,解决这两个方向的问题,ORM工具或E/R模型编程未必是最好的方式,原因是这两种方向和思考比较不客观,那就是假设现实世界和数据有一方是不变的,或是我们自己可以控制的,事实上,这种想法是不现实的。 同样仔细想想Entity Framework(也许NHibernate也是)在从外向里(Outside-in)方向也提供了支持,这也就是Dsimmons为代表的EF大佬经常说的,Entity Framework 不是简单的ORM工具,它主要是提供一个完全贴近现实的E/R模型,这个模型可以进行数据编程(DP),也可以建模和进行数据表现,最重要的是这个模型可以被共享和重用(目前比较成功的一个案例就是能被ADO.NET Data Service 共享和重用),另外一个方面SQL Server的功能再逐渐增强以及新近的LINQ等数据库+DP的功能混杂和爆发,都在另外一个角度朝从下向上推进,这种情况下Mapping是可以限定在某些功能和场景的,Entity Framework 似乎也是朝这个方向发展的,事实上,这也是比较可能和有效的发展思路--从这样角度来看EF现在的ORM/Mapping方面的不足也就容易理解了。 相反从里到外(Inside-out)的方式,我认为是比较困难的,先假设我们先拥有一种万能的Mapping/ORM技术或工具,然后我们再使用它来连接现实世界/OPP和数据存储/数据库之间的变化和gap,这个。。。。。呵呵,可能是我误解了。

从上面的描述上可以很清楚的看出Entity Framework和NHibernate的区别,虽然他们都是ORM工具,他们在ORM的各个方向的侧重是不一样.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zhangdd.com

详解Win10家庭版/专业版/企业版功能区别

之前曾经在今年更早时间解释了Win10各个版本之间有什么差别和不同之处,但是在Win10升级全知晓中发现依然有很多朋友还是在问,这里就再详细解释一下。

1983
来自专栏美团技术团队

WWDC案例解读:大众点评相机直接扫描支付是怎么实现的

去年12月4日,Apple CEO Tim Cook 和王兴共同出现在上海的一家老字号生煎店“大壶春”,现场用大众点评App体验了iOS 11新功能,包括用地图...

1072
来自专栏张善友的专栏

针对构架师的.NET 3.0介绍

微软.NET的最新版本,.NET Framework 3.0,为开发下一代业务解决方案软件系统开启了新的可能。它的设计目标是:提高生产力,降低基础设施复杂性,提...

1806
来自专栏张善友的专栏

.NET平台微服务项目汇集

最近博客园出现了一篇文章《微服务时代之2017年五军之战:Net PHP谁先死》,掀起了一波撕逼,作者只是从一个使用者的角度来指点江山,这个姿势是不对的。.NE...

2299
来自专栏张善友的专栏

如何为Windows Phone 7认证考试70-599做准备

Windows Phone 7的考试将于7月14日开始提供。 彼得对库恩Silverlight Show上已发布了有关如何准备Windows Phone 7认证...

1785
来自专栏角落的白板报

【52ABP实战教程】0.0.0 -- ASP.NET CORE系列介绍

为什么是.net core? 记得在半年前.NET CORE刚刚出了1.0,当时有朋友推荐我使用的时候,个人觉得还不成熟。 现在.NET Core已经到了2....

3988
来自专栏小狼的世界

Shell历史

浏览了一下Wiki,把shell的历史简要摘抄了一下,整个发展过程还是很有趣,csh贡献了很多的想法和特性,但是最后却没有流行起来。sh虽然刚开始功能比较简单,...

681
来自专栏小轻论坛

掌握了这些win10操作技巧,你的操作便入无人之境

介绍Win10 的一些使用小技巧,自2015年7月29日Win10 正式发布已经过了有2年了,期间也进行了好几个版本的迭代更新。

1562
来自专栏SDNLAB

ETSI OSM发布第四版本,ONAP不是一枝独秀

2025
来自专栏章志青的专栏

如何通过代码分析精简用例(2)

上一次分享的如何通过代码分析精简用例主要是针对 WEB 侧逻辑复用,从而精简冗余用例的案例。本次的案例分享是希望通过对 SVR 代码的分析,完成用例执行的精简。

1070

扫码关注云+社区

领取腾讯云代金券