请问现在主流的ORM框架是 Nhibernate和Spring.NET吗?大公司都要这些框架做开发吗?还是大公司都有开发一套自己的框架?开发一套自己的ORM框架而不会用Nhibernate和Spring.NET会很落后吗?现在asp.net的企业级开发的终极解决方案是asp.net mvc+Nhibernate+Spring.NET+Linq+WCF 吗?我该自己学写一个ORM框架还是直接学会用Nhibernate和Spring.NET就可以了?请高手们多多发言交流一下,为我指明一条学习方向。谢谢!

解决方案 »

  1.   

    Nhibernate和Spring.NET我没用过
    微软自己本身不是有Linq to sql(或object,entitiy) 和 Entity Framework吗?
    自己开发怎么能叫落后呢……我们现在产品用的就是自己开发的……
      

  2.   

    你可以去了解一下Nhibernate和Spring.NET。这东西很简单,看两遍就会了,也省的你担心和别人无法交流。另外Linq To EntityFramework建议你也了解一下,我觉得这是微软以后的一个趋势,这东西也简单,了解一下它的运作机制就好了。至于自己写的框架,那也不错啊,可以学习学习。说不上哪个比哪个好。毕竟实用的才是最好的,
      

  3.   

    .net 主流的orm还是微软自己的entity framework, linq to sql已经被它取代了。
      

  4.   

    实际上不必讨论这个问题如果你的眼睛只看到数据库的话,你可以不必讨论这个问题,因为orm对于你完全是多余的东西,即使给了orm你任然会把眼睛放在sql上,啥视图,存储过程,拼接sql,按条件update,你依然在做以前一样的事情,甚至很多情况下因为中间隔了一个orm而觉着更加束手束脚如果你的眼睛关注对象的话,你同样可以不必讨论这个问题,在关注对象的人眼中,他只是一个数据持久层,既然是数据持久无关逻辑,那么用啥东西持久都是一样滴
      

  5.   

    我只是对大家所在的公司有所疑问,不知道别的大公司是怎么做的,只是不想因为自己在小公司就落后了。怎么说也要和大家接轨吧。那么你们所在的公司是用NHibernate还是公司自己开发的ORM呢?
      

  6.   

    上面我说的主要目的还是让你分清楚情况对于传统使用sql开发的人来说,用自己做的orm还是大公司的orm,没有区别!因为他们始终还是以sql为核心滴,即使是使用Nhibernate又如何,对于这类人他还是存储过程,视图,还是sql,还是要写hql,所以对这类人来说使用你自己开发的和大公司开发的没区别而对于玩对象滴,实际就更无所谓了,逻辑都不在数据库这块,我用orm这是为了持久保存数据,只要达到这个目的了,而且性能,并发都还可以接受,那么用自己开发的和用大公司滴又有啥区别呢实际上对于开发来说,我们是只用合适的,而不是只用贵滴,大滴-------对于这行来说合适就好,虚荣是要不得地,崇拜编程也是要不得地,新工具新技术综合症也是要不得地
      

  7.   

    开发人多的话用ORM还是非常有好处的吧。如果直接写sql很难管理,而且公司每个程序员的代码风格不一样。不能做到统一,如果一个程序员走了,他的代码收手的人是很难看懂的,而用ORM就能解决这个问题。另外用ORM也是面向对象的。我只是纠结在是开发自己的ORM好还是用Nhibernate、entity framework, linq to sql这些第三方和微软的东西好。
      

  8.   

    你没有理解wanghui0380的意思,他并没有说不用ORM,而是分情况使用,因为不同的人注重的地方也不一样。
    他已经说的很明白了——
    实际上对于开发来说,我们是只用合适的,而不是只用贵滴,大滴-------对于这行来说合适就好,虚荣是要不得地,崇拜编程也是要不得地,新工具新技术综合症也是要不得地
    至于楼主你到底是要用现成的一些框架还是自己写,同样也是要视情况而定,我们只能给出建议。
    像楼主说的在小公司的话,我觉得用现成的框架比较好
      

  9.   

    lz有这时间纠结,Linq2EF的Quick Start都做一遍了!
      

  10.   

    高手又到另外一个层次了。看来我还是太菜了。我们公司就是用着一套自己开发的ORM,而据我了解现在很多大的软件公司都在用Nhibernate、Spring.NET这类东东。
      

  11.   


    不是我又来了,而是你又来了借楼主这个帖子,对jelly1989说几句话我明白你的意思,不过你的明白这里是csdn,不是幼儿园大班,如果你想找家教或者保姆,你应该去职介中心,或者干脆给青鸟交个几w块csdn是一个交流心得的地方,不是基础认知培训中心,也不是保姆天地,ok你不喜欢我们的态度,无所谓,你大可以去青鸟的培训论坛。我只说感谢csdn这些大牛们这些态度n年前我做视频的时候,我承认当时对视频完全没有概念,于是c++版滴人让我去看陆其明的《directshow入门》《directshow实务》我看了把基础知识补齐了,现在我能很熟练玩视频,我感谢当初让我看书的大大n年前我也想lz一样困惑于数据库和对象的关系,发了一个帖子,sp1234大大劈头就是一通,让我去看看到底啥叫实体,我看了开始不理解,现在很明白了,我得谢谢sp1234大大记住这里的人不是保姆,而是那些吃过亏,上过当,到过你没到过的地方的人。如果你只是在岸边上还不会游泳,你是想学游泳滴,那么你来错位置了,这里的人交流的不是如何游泳,而是怎么游的好看,快速,那里有暗流,那里有鲨鱼!!
      

  12.   

    看实际的需求吧,如果是比较复杂的业务用ORM确实方便。
      

  13.   

    我想问一个实际的问题,就是关于如何设计实体类的,这个问题一直困惑了我很久。我有三张表
    User表
    UserId  UserNameRole表
    RoleId  RoleNameUserInRole表
    UserId  RoleId对应的表我设计了两个实体类,UserInfo.cs 有属性 UserId  UserName  和  RoleInfo.cs 有属性 RoleId  RoleName现在我要在aspx页面显示一个GridView有三列数据 UserId  UserName  RoleName
    我获取 List<UserInfo> 并不包含RoleName的属性。我应该怎么做?要另外再写个实体来对应它们吗?如果我又需要增加显示一列别的什么数据,难道我又要再写一个实体类吗?真不知道实体类该怎么抽象出来。这方面的知识不知该怎么学习?
      

  14.   

    同意。
    我眼中只看到数据库。我从来都不相信ORM,我只信任自己看到的结果,只信任数据库。
    你把数据放在数据库里,却不想去弄清楚他,而是弄个作为ORM来犹抱琵琶半遮面有什么意思,只调情说爱,不真正的把她脱光看个一清二楚,并且实践调试。就做不好真正的数据库开发。要真正写好系统,必须深入数据库的核心。ORM只是为了提供生产力提供的工作分工的工具,是为不懂数据库的程序员设计的。
      

  15.   

    现在asp.net的企业级开发的终极解决方案是asp.net mvc+Nhibernate+Spring.NET+Linq+WCF 吗?我现在在用这个不过前段是GWT 所以MVC就省略了。Nhibernate 比较算成熟的了但在某些方面 还有不足的  可以把EF 的优点 集成到Nhi里 就可以了spring.net 在里面应用的很简单。。Nhibernate 可以写个辅助库linq可以现学。
      

  16.   

    Nhibernate和Spring.NET都没用过,微软现在推广的ORM框架是ADO.NET Entity Framework,LINQ to SQL也已经停止开发和升级了。===================================================
    ASP.NET WebForm和ASP.NET MVC分页最终解决之道
      

  17.   

    这么说可以不学LINQ to SQL,直接学ADO.NET Entity Framework了吗?那其他的linq to xml之类的还是要学的吧
      

  18.   

    这么说以后的企业级终极解决方案是asp.net mvc+Entity Framework+Linq+WCF了 
      

  19.   

    LINQ to SQL已经被淘汰了,ADO.NET Entity Framework的强大是那些什么Nhibernate、Spring.NET望尘莫及的...根本没必要纠结...ORM只是工具,编程语言、数据库其实也都一样...这些技术从来只闻新人笑,无人在乎旧人哭...只有思想、方法是永恒的,其他都是浮云...
      

  20.   

    秀逗,什么叫级终极解决方案,如果真有,其它的技术就没有存在的必要,所谓的ORM工具都是靠反射实现的,性能可想而知。在处理百万级以上的数据,性能可想而知,远远不如使用ado.net+存储过程。
      

  21.   

    请问不变的思想是什么,根据客户需求写功能文档、设计数据库表、把数据库表关系抽象成OO方法的实体、UML,软件工程这些才是不变的王道吗?
      

  22.   

    顶放哥的话:
    实际上对于开发来说,我们是只用合适的,而不是只用贵滴,大滴
    --------------------
    Entity Framework前年就用过了,不是很成功,主要是我们的查询太复杂,使用它效率比较低,可能是我们的OO水平不够,都是将复杂的SQL转成对应的LINQ语法的,但这是历史问题,没辙。现在我们公司的项目都用PDF.NET数据开发框架,操作单表的CRUD使用OQL表达式去操作实体类,复杂的连表查询、存储过程、自定义函数调用使用SQL-MAP技术,效率与灵活性兼容,喜欢ORM的用OQL技术,喜欢SQL的用SQL-MAP技术。
      

  23.   

    你的PDF.NET框架能发一份给我吗, ,我会好好研究给你提供点使用意见的。
      

  24.   

    Entity Framework微软不是还在开发还没上线吗?你居然前年就用过了?
      

  25.   

     有用过nhibernate 和spring.net  有好处,但也有坏处。
        个人觉得什么框架都是死的 ,关键是适合自己项目的框架才是最好的
      

  26.   

    可以先下载一份框架Ver3.0的示例程序:http://download.csdn.net/source/2052993
    已经有很多朋友下载了,并获得了很多好评,你可以先下载研究下,如果需要使用最新版本的框架程序源码,请看官网http://www.pwmis.com/sqlmap 说明如何获取。
      

  27.   

    --------------------------------------------------------------------------
    “n年前我也想lz一样困惑于数据库和对象的关系,发了一个帖子,sp1234大大劈头就是一通,让我去看看到底啥叫实体,我看了开始不理解,现在很明白了,我得谢谢sp1234大大”
    现在我对实体、orm 也挺困惑的,能否提供些书籍、资料或学习方法?   非常感谢!
      

  28.   


    这些都是第三方弄着玩的,如果你感兴趣可以了解。不入.net framework流。
      

  29.   

    正入楼上有些人所说,假设你对linq to sql和ling to entities等不感兴趣,可以选择其它provider。这是.net framework的框架的扩展,你可以在各种provider之间取得一致的编程经验。
      

  30.   

    微软的这些东西和微软提供的这些接口好像很少人懂的用。就像membership微软也提供的很好,也能拓展,好像也没什么人用。
      

  31.   

     Nhibernate和Spring.NET都是从Java世界流窜过来的,在JAVA EE世界里,标准和企业级开发是Struts + Hibernate + Spring. Struts是表现层, Spring处理业务逻辑层,Hibernate负责处理持久层。
      

  32.   

    把微软开发的SqlMembershipProvider和Oracle开发的OracleMembershipProvider提取出来看看,绝对不用什么流行的Entity Framework之类的东东,都是一行行过硬地写出来的。要偷懒,要省事,就用ORM,要高效,还是自己写。
      

  33.   

    entity framework 是微软重点开发的吧其实这些orm都可以了解下,选择一个用习惯的就行了,新的工作都有一段学习时间的,适应下就好了。
      

  34.   

    菜鸟,顶顶。只会用Ado.net 
    什么orm都不会
      

  35.   

    spring.net可不是orm, NHibernate才是,这两个都是Java的翻译过来的。你要用WCF的话,还是用Entity Framework吧,序列化简单方便,也支持LINQ。
      

  36.   


    其实这些所谓orm框架确实是虚的,一方面它是公司研发产物,需要眼球关注,n年一样总比年年出新吸引人吧。另一方面orm怎么说也是建立在抽象的基础上,应该说各有各的适用场景,也并不代表相互之间水火不容,怎么选择完全可以根据实际情况。
    我也是在一小公司,但是接到的项目各有不同,有的功能简单要求很急人手也不够,怎么办,linq to sql拖拖拽拽调调页面ok了。有的是自己为了申报项目做的,怎么办,什么新什么牛叉用什么,到时候验收材料才有看头好通过。
    所以说,什么框架无所谓,关键你得培养你那个脑子,能在一定的时间内掌握这个框架,再进一步能精通这个框架,之后也可以考虑根据需要修改或者做自己的框架了。
      

  37.   

    我们公司用的是Spring.NET+NHibernate,还得学EntityFramework。
      

  38.   

    lz25楼的问题
    你实体类设计有问题
    user和role是个多对多的关系,实体类应该得以体现
      

  39.   

    ORM 是建立在完善的架构上的一种优化方案(或者非优化方案)。
      

  40.   

    还是自己搭建一个框架。。net开发已经很傻瓜化了。你在用框架。自己能掌控的事情还有多少? 还是自己弄吧。对细节方面掌控的全面点。  
      

  41.   

    所言极是,这两年一直在用entity framework,但是有时候还是感觉自己拼sql来得直接痛快!
      

  42.   

    LZ,其实现在大部分公司还是用的NHibernate 和 Spring.NET ,其他大公司自己的ORM框架也是根据这个演变而来的,你最好掌握这两个框架的核心,多看看源代码什么的,万变不离其宗,这个懂了,就算碰到公司自己的框架也能很容易的接受,我说的就这些。,希望对你有帮助,。谢谢
      

  43.   

    不要被技术迷惑,懂得SQL最重要
      

  44.   


    这个还真的没有,因为如果是实体对象的,主要还是站在对象设计层面上,而ORM只是一个实现上必须有,但设计可以无的东西(实际上在OOAD层面上,就像vrhero所说,虚无和形而上的东西比较多,只关心抽象的逻辑,而不怎么关心具体的数据存取)具体的可以看《领域驱动设计与实践》这类书籍
    实际上无论TDD还是DDD,或这企业级架构设计这块还是有很多有名的专著的,我之所以介绍这本《领域驱动设计与实践》因为他一个综合分析实践书,以实践分析为主,比较少涉及那些即使现在还在争论的理论,而且跨度也比较大,包括 领域驱动分析(DDD),TDD测试驱动开发,POCO实体对象,AOP等比较有实际意义的并可操作的思路和手法
      

  45.   


    《领域驱动设计与模式实战》
    http://product.china-pub.com/192983这本书的中文翻译上是有点问题,不过大体上也可以看,就像上面讲的他不是这方面理论知识的权威书籍,而是具体实践,所使用的思路和手段更偏重于可实践可操作。
      

  46.   

    开发自己的ORM好.可以在以后的项目中灵活应用,并且可以发展出自己的一套思路,在以后的职业生涯也是好的。最重要的一点。开发自己的ORM,自己知道里面的细节,找出问题更快,以后要修改起来也快,也能提高自己的思路和水平,如果你还年轻那自己开发吧。并把自己的开发过程用BLOG记下来。留给一些后来人。
      

  47.   

    微软的都市落后的,但都是容易用的东西,业余的而不专业的东西!
    BORLAND的J2EE ENTITY BEAN N年前就实现的东西,微软现在才搞