求教,ORM是什么?能用从C#中说明么?

韠麣龘龘爨矲鼶 2015-02-28 02:58:20
我准备开始学ASP.NET。
看的传智播客的视频学,
里面有讲学习ASP.NET的基础,就是要学ORM。
但我之前没有接触到过这个名词。所以很难理解。

当然,我也会百度,不过,百度出来的东西看不懂啊

==================百度到的内容=================
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
=============================================

不太理解啊……
之前学的都是ADO.NET。 也就是DBConnection、DBcommand这一体系下的操作数据库的技术。 但没理解ORM到底是什么含义,甚至连这个名词都没听说……

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

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧