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

问题描述

我准备开始学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,太多东西需要学习了。

时间: 2024-08-31 18:25:14

求教,ORM是什么?能用从C#中说明么?的相关文章

xl2tp vpn dns 客户端-求教:xl2tpd建立客户端,在ipcp中只有ip地址请求,没有dns请求。怎么把dns请求添加进去

问题描述 求教:xl2tpd建立客户端,在ipcp中只有ip地址请求,没有dns请求.怎么把dns请求添加进去 解决方案 解决方案二:

小白求教一个C++问题,关于将TXT中的文件读入并以此数据创建链表的问题。

问题描述 小白求教一个C++问题,关于将TXT中的文件读入并以此数据创建链表的问题. 编写一个程序实现如下操作: (1)从文本文件student.txt读入存放于该文件中的学生数据(学号.姓名.性别.专业),构建一个学生数据链表(单向链表): (2)对所建立的学生数据链表按学号排序: (3)将存放于已排序的学生数据链表中的学生数据写入student1.txt中. 解决方案 http://blog.csdn.net/jiaxiaoye2005/article/details/8446245http

求教,如果在winform的客户区中要显示多个不同的界面,一般用不同panel切换,还是多个winform切换展示?

问题描述 初学者求教,如果在winform的客户区中要显示多个不同的界面,一般用不同panel切换,还是多个winform切换展示?我现在要写一个简单winform,要求当点击菜单栏不同的项目时,下面要展示不同的控件集合或界面,不知道在这种情况下一般用panel切换还是添加多个winform?谢谢大家! 解决方案 解决方案二:不能用tabControl吗?解决方案三:多界面的代码量小,易懂,好控制单界面代码超多,乱,但界面操作的易用性好解决方案四:如果业务逻辑不同,最好用多个窗体实现,这样程序的

c语言-大神求教C语言,知道二叉树先序中序遍历序列,求后序遍历序列。

问题描述 大神求教C语言,知道二叉树先序中序遍历序列,求后序遍历序列. #include#include#include using namespace std; typedef struct Btree{ struct Btree *left; struct Btree *right; char data;}Node; void Create_Btree(Node *tree char *pre int pre_low int pre_high char *middle int middle_

毕业设计难题。求教大神,怎样在sql数据库中保存图片的相对路径,和怎样在jsp页面显示图片。

问题描述 列如,我有一张图片,怎样才可以保存数据库,用相对路劲,该怎么写?还有怎样在jsp页面中显示图片,求详细点的方法,谢谢,在线等! 解决方案 解决方案二:1.上传图片的时候在后台对路径做好处理后入库.2.jsp页面直接用<img>标签,url直接访问后台servlet,该servlet功能是读取服务器图片并传到页面上(利用输出流)解决方案三:可以详细点吗?比如有点代码,比较困惑现在解决方案四:既然是毕业设计,那就索性无赖的做法吧,直接把图片存成BLOB放在数据库里.然后取的时候img的s

求教netbeans 7.0有没有类似于C++中ALT+F8的使代码自动缩进规格化的功能

问题描述 如题...做东西老是想起来一点做一点,做好后样子不好看,麻烦各位大神提供个方法解决下...如果netbeans不带,我又能用什么其他方法解决...貌似复制进VC再复制回来木有用..

求教,用C#如何修改excel表格中指定单元格中的数据?

问题描述 比如已经有了一个二维数组{1,5,5,7,22,7,7,8,6h,f,r,f,d}想把它以表中H9单元格开头,一行一行的放进去,最后结果:应该怎么写代码?不知道sql能不能用,还是用range,还是用其它办法? 解决方案 解决方案二:都可以,修改用range来得方便些吧,指定的单元格赋一个值就可解决方案三:告诉你一个用aspose.cell的方法try{Workbookworkbook=newWorkbook(Application.StartupPath+"\扫描结果.xls&quo

求教!用Java编写,使用设计模式中Builder模式创建树形菜单,其中要求树形菜单为一个满二叉树

问题描述 输入参数为树的深度.如输入为3则输出以下树形菜单(注意缩进)Level_1Level_2_1Level_3_1_1Level_3_1_2Level_2_2Level_3_2_1Level_3_2_2 解决方案 解决方案二:就这还有用builder模式?是怎么想的?乱用.

ORM轻量级框架:ActiveAndroid概述

ORM即Object-Relational Mapping,对象关系映射.简单理解就是把我们Java的对象与数据库里面的记录进行映射,可以把实体对象持久化到数据库中,也能把查询到的记录映射成Java对象.ORM让我们彻底解放,一点也不需要再去编写冗长晦涩的Sql语句,一切都是通过框架去做,不得不说是程序员的一大福音. ORM框架实现的原理其实也很简单,就是利用Java的反射机制把对象和数据库记录映射关联起来.比如存储的时候,是把对象的属性取出来作为记录的属性值进行插入:而查询的时候则是把查询条件

ADO.NET与ORM的比较(4) EntityFramework实现CRUD

说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是 Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操 作数据库之外,大量的书籍中都是讲述使用Hibernate这个ORM工具来操作数据. 在.NET中操作数据库的方式有多种,除了最直接的方式就是使用ADO.NET之外, 还可以使用NHibernate这个Hibernate在.NET中的实现ORM,如果你对第三方的 ORM 持怀疑态度,你还可以使用来自微软的实现.根正苗红的Lin