问题描述
我准备开始学ASP.NET。看的传智播客的视频学,里面有讲学习ASP.NET的基础,就是要学ORM。但我之前没有接触到过这个名词。所以很难理解。当然,我也会百度,不过,百度出来的东西看不懂啊==================百度到的内容=================对象关系映射(英语:ObjectRelationalMapping,简称ORM,或O/RM,或O/Rmapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。=============================================不太理解啊……之前学的都是ADO.NET。也就是DBConnection、DBcommand这一体系下的操作数据库的技术。但没理解ORM到底是什么含义,甚至连这个名词都没听说……希望高手耐心帮我讲解下,在代码里反应出来到底是什么?
解决方案
解决方案二:
引用楼主u012159928的回复:
里面有讲学习ASP.NET的基础,就是要学ORM。
asp.net针对数据库操作的基础是ado.net,跟orm没有关系。.netframework有一个ef来做到一些orm功能,但是不能算是asp.net的基础。进行asp.net开发,不需要会ef。
解决方案三:
比如说一个学生连sql都没有学过、因此ado.net的那点语法虽然会了、但是背后的sql稍微复杂一点的根本不会写,也不会最基本的关系数据库的客户端工具的使用(例如建立各种表结构、建立索引、创建触发器和存储过程、使用查询分析器),自然也就不能迅速学会linq表达形式,那么这就无法上岗。因为一个人的基础知识和自学能力应该是至少3年以上时间培养起来的,绝不是通过3~4个月现学现卖地培训而养成的。而纠结于ado.net语法本身,则是没有什么意义的。同样地,纠结于ef也是没有什么意义的。如果不会关系数据库和sql语言的基础,那么就算是“基础太差”。招聘时如果你不会ef,那么用ado.net也能测试出你的关系数据库和sql语言的水平,跟ef这种小东西没有关系。ef可以在工作之后用几天时间专门学习一下。
解决方案四:
就不要过多的纠结它的名字了,你只要知道它是一种与数据库进行交互的技术实现,同时它还帮你实现了一些简单的sql或者复杂的sql,它的内部就是封装调用ado.net
解决方案五:
我们招聘的时候,有一次要求人家写一个4个表的join操作,然后groupby分组统计,遇到了一个奇葩的应聘者,拒绝回答!我问对方为什么拒绝回答,他告诉我“我在黑x培训学校时,dao.net和ef都学过了,我就是会,我算是学的最好的,只不过现在我一时半会儿想不起来了”。我哭笑不得,问对方“你确定是dao,net吗?是不是ado.net啊?”他回答“就是dao.net,不信你去百度查查。不是ado.net!”实际上招聘流水线上的工人的小公司,现在也越来越少了。大多数公司更希望招聘一个实习开发人员,而不是一个实习工人。那些快速镀金的现代化的廉价粉饰方法,这些东西在公司里可以给你的比那些社会上的多100倍,前提是你立刻就能搞研发(用以前从未见过的工具),而不是只会用一点简单的工具。
解决方案六:
其实这就相当于你要对方写一个小文章,对方说他以前使用金笔写出正规文章的,现在的笔不叫做金笔(只是叫做签字笔),所以写不出文章来了。这就是强词夺理。我们要知道的是sql的知识,不是什么dao.net。应聘者这要用任何一种可行的做法做出来就行了,一个公司要的人是基础知识及格的人,不是仅仅“见过”最新工具的人。
解决方案七:
我并不是说那种“视频”本身的内容有什么错。要注意这一点。我要告诉你,那种东西也就只能作为现学现卖的表面文章,就像菜谱一样,你要学做厨艺不能靠看菜谱。菜谱是人家厨师写给其它厨师、没事时翻翻看的,而你一个学院想靠看菜谱来学习厨艺,你就上当了!
解决方案八:
引用6楼sp1234的回复:
我并不是说那种“视频”本身的内容有什么错。要注意这一点。我要告诉你,那种东西也就只能作为现学现卖的表面文章,就像菜谱一样,你要学做厨艺不能靠看菜谱。菜谱是人家厨师写给其它厨师、没事时翻翻看的,而你一个学院想靠看菜谱来学习厨艺,你就上当了!
到处都能发现你的身影,写得很有道理,受教了。
解决方案九:
引用4楼sp1234的回复:
我们招聘的时候,有一次要求人家写一个4个表的join操作,然后groupby分组统计,遇到了一个奇葩的应聘者,拒绝回答!我问对方为什么拒绝回答,他告诉我“我在黑x培训学校时,dao.net和ef都学过了,我就是会,我算是学的最好的,只不过现在我一时半会儿想不起来了”。我哭笑不得,问对方“你确定是dao,net吗?是不是ado.net啊?”他回答“就是dao.net,不信你去百度查查。不是ado.net!”实际上招聘流水线上的工人的小公司,现在也越来越少了。大多数公司更希望招聘一个实习开发人员,而不是一个实习工人。那些快速镀金的现代化的廉价粉饰方法,这些东西在公司里可以给你的比那些社会上的多100倍,前提是你立刻就能搞研发(用以前从未见过的工具),而不是只会用一点简单的工具。
比如sql存储过程,视图,联合查询这些倒是学过,也理解,我都记录在一个笔记本里了。不过语法上有点模糊了,看笔记也可以马上回忆起来。我想学完知识点后再做项目的时候同时练习它们。看到这个ORM,之前没看到过这个名词,不知道它具体是什么。
解决方案十:
ADO.NET是通过sql语句进行增删改查ORM是为了快速开发使用编程语言通过操作对象的方式进行增删改查.为了方便开发,解决数据库的兼容,等,公司通常会采用一种ORM框架来进行开发.
解决方案十一:
引用6楼sp1234的回复:
我并不是说那种“视频”本身的内容有什么错。要注意这一点。我要告诉你,那种东西也就只能作为现学现卖的表面文章,就像菜谱一样,你要学做厨艺不能靠看菜谱。菜谱是人家厨师写给其它厨师、没事时翻翻看的,而你一个学院想靠看菜谱来学习厨艺,你就上当了!
丢砖点错了,手机发帖不容易,不好意思。看传智的就业班视频,我一般理解其思路和知识点。然后记下来。最起码,我知道有这个东西了,这也算一个启蒙。不过这个orm具体是什么?我没有听过,连启蒙都没有现在。
解决方案十二:
这么说,在.net里访问数据库就得用ado.net,orm提供了一种数据库语言无关的数据访问方式,但它还是要用到ado.net来实现
解决方案十三:
引用9楼xtdhb的回复:
ADO.NET是通过sql语句进行增删改查ORM是为了快速开发使用编程语言通过操作对象的方式进行增删改查.为了方便开发,解决数据库的兼容,等,公司通常会采用一种ORM框架来进行开发.
那么sqlhelper,或者三层架构的dal层编写成框架形式,也就是算是orm了吗?
解决方案十四:
引用11楼KarasCanvas的回复:
这么说,在.net里访问数据库就得用ado.net,orm提供了一种数据库语言无关的数据访问方式,但它还是要用到ado.net来实现
好像有点启发了。是不是可以理解为,ado.net是直接通过语句操作数据库。orm是将其封装,以对象形式来操作数据库吗?那个ef其实就是orm?(虽然我没用过ef,我可以看看增加点见识)
解决方案十五:
引用13楼u012159928的回复:
Quote: 引用11楼KarasCanvas的回复:
这么说,在.net里访问数据库就得用ado.net,orm提供了一种数据库语言无关的数据访问方式,但它还是要用到ado.net来实现好像有点启发了。是不是可以理解为,ado.net是直接通过语句操作数据库。orm是将其封装,以对象形式来操作数据库吗?那个ef其实就是orm?(虽然我没用过ef,我可以看看增加点见识)
差不多就是这意思吧。
解决方案:
引用4楼sp1234的回复:
我们招聘的时候,有一次要求人家写一个4个表的join操作,然后groupby分组统计,遇到了一个奇葩的应聘者,拒绝回答!我问对方为什么拒绝回答,他告诉我“我在黑x培训学校时,dao.net和ef都学过了,我就是会,我算是学的最好的,只不过现在我一时半会儿想不起来了”。我哭笑不得,问对方“你确定是dao,net吗?是不是ado.net啊?”他回答“就是dao.net,不信你去百度查查。不是ado.net!”实际上招聘流水线上的工人的小公司,现在也越来越少了。大多数公司更希望招聘一个实习开发人员,而不是一个实习工人。那些快速镀金的现代化的廉价粉饰方法,这些东西在公司里可以给你的比那些社会上的多100倍,前提是你立刻就能搞研发(用以前从未见过的工具),而不是只会用一点简单的工具。
他可能是他的老师讲Ado.net写DAO(DAL)层,他记成了DAO.net了吧
解决方案:
引用13楼u012159928的回复:
Quote: 引用11楼KarasCanvas的回复:
这么说,在.net里访问数据库就得用ado.net,orm提供了一种数据库语言无关的数据访问方式,但它还是要用到ado.net来实现好像有点启发了。是不是可以理解为,ado.net是直接通过语句操作数据库。orm是将其封装,以对象形式来操作数据库吗?那个ef其实就是orm?(虽然我没用过ef,我可以看看增加点见识)
差不多了~~~ef是orm以linq的方式来操作对象ef会把结果转成sql传给数据库其实最简单的就是你自己可以把DataReader读数据转成实体对象而不要用DataTableDataTable是弱类型的~~调用者必须知道DataTable是怎么填充的dt["必须知道字段,还容易敲错"]而Orm是这样的obj.属性,有智能提示~~快很多~不会错~
解决方案:
先把增删查改练熟了再说其他的
解决方案:
引用12楼u012159928的回复:
Quote: 引用9楼xtdhb的回复:
ADO.NET是通过sql语句进行增删改查ORM是为了快速开发使用编程语言通过操作对象的方式进行增删改查.为了方便开发,解决数据库的兼容,等,公司通常会采用一种ORM框架来进行开发.那么sqlhelper,或者三层架构的dal层编写成框架形式,也就是算是orm了吗?
对,简单的说把三层架构的dal层封装起来,它就是orm了.你现在应该是在学怎么用"某种orm框架",学习用的时候多想想它是怎么实现的.
解决方案:
EF原来就是EntityFramework的缩写啊,还有Linq,太多东西需要学习了。