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没有做到使用上的便捷.正印证了一句话:很多事情没有完美的解决方案,只有一个平衡点.
 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM