ORM全新理念,谈主流ORM思想,待续
一、EF(实体框架)
主流的ORM思想以Linq为主要思想支柱,其中王者不得不说为EF,优雅便捷可谓正统,当其性能和实战性似乎仍待提高.Linq不能为我们生成理想的sql,而且linq自身的性能有损失.这是EF不得不面对主要的问题.EF的优点诸多不必多说.
Linq的优缺点似乎也成了EF的优缺点之一.微软想通过Linq让我们以一种面向数据对象的方式来思考,及持久化他们的数据.可是我们可想想数据库的中的记录难道就不是对象了?Linq给人以优雅和便捷我想这是他明显的优势,然后就是匿名对象在其中发挥的重要作用.如下所述:
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阵营似乎通常都不喜欢.
三.我们谈谈企业开发的宗旨.