ORM全新理念,谈主流ORM思想,待续

一、EF(实体框架)

    主流的ORM思想以Linq为主要思想支柱,其中王者不得不说为EF,优雅便捷可谓正统,当其性能和实战性似乎仍待提高.Linq不能为我们生成理想的sql,而且linq自身的性能有损失.这是EF不得不面对主要的问题.EF的优点诸多不必多说.

    Linq的优缺点似乎也成了EF的优缺点之一.微软想通过Linq让我们以一种面向数据对象的方式来思考,及持久化他们的数据.可是我们可想想数据库的中的记录难道就不是对象了?Linq给人以优雅和便捷我想这是他明显的优势,然后就是匿名对象在其中发挥的重要作用.如下所述:

var Obj= from c in ctx.Customers
                  where c.Country == "France" && c.Orders.Count > 5
                  select new
                  {
                      Country= c.Country,
                      City= c.City,
                      Count= c.Orders.Count
                  };

 

 然后我们Obj.Country, Ojb.Count的方式操作数据.优雅便捷.

如果让你看到以下的情况,你在一个无法写出linq的情况下会如何选择

自定义类名(这个类其实事先是不存在的,有框架自动生成)
int count=obj.Count;
string country=obj.Country;
var list=DBFactory.GetAutoEntities("相当复杂的一个sql查询语句","自定义类名");
for(var a in list){
int count=a.Count;
string country=a.Country;
}

 

这是Moon的一个新特性.其中的obj是类名的一个实例,它的成员是查询中记录的字段.欢迎大家到时试用.

 其实linq没有给我带来什么,只是一种概念上的错觉,负责的sql它就无能为力了.其实一个匿名类型作为model返回给视图时是无法使用的,这也是一个问题,但moon这不然,因为事实上它是强类型.我的设计理念:大道至简.

 

对于实体框架的性能不用多说,给一个比人的测试:http://www.189works.com/article-54297-1.html

总之:性能在大型项目中的需求是至关重要的,不要只说瓶颈在io和网络上,其实代码本身是重要的一环.

二.Nhiberate

不得不说它很强大,在很多方面都由于EF,当然linq的支持不如EF.物极必反视乎是自然界的普遍规律,强大带来的复杂性也不容小觑.带来的学习成本也是比较大的.复杂的配置是java的显著体征..NET阵营似乎通常都不喜欢.

三.我们谈谈企业开发的宗旨.

 

企业开发宗旨在于高效、便捷以及系统升级与维护的稳定.其中微软没有做到性能的高效.nhiberate没有做到使用上的便捷.正印证了一句话:很多事情没有完美的解决方案,只有一个平衡点.
 

 

 

 

 

 

posted @ 2012-07-19 14:51  [秦时明月]  阅读(2795)  评论(16编辑  收藏  举报