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

     

     

  • 相关阅读:
    C++入门经典-例3.4-根据成绩划分等级
    C++入门经典-例3.3-if-else语句的奇偶性判别
    C++入门经典-例3.2-根据分数判断是否优秀
    C++入门经典-例3.1-判断输入的数字是否为奇数
    C++入门经典-例2.17强制类型转换
    C++入门经典-例2.16-隐式类型转换
    C++入门经典-例2.15-逗号表达式的应用
    C++入门经典-例2.14-使用移位运算
    C++入门经典-例2.13-左移运算
    Spring之Bean管理------注解方式
  • 原文地址:https://www.cnblogs.com/humble/p/2599257.html
Copyright © 2011-2022 走看看