- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
初学ORM,ORM的原理及测试案例
初学ORM,ORM的原理及测试案例提纲一、什么是ORM。二、反射以及Attribute在ORM中的应用。三、创建一个数据库表和表对应的实体model。四、实体model如何映射出数据库表。五、组合ORM映射生成insert语句。六、测试ORM的插入映射。七、总结。内容:一 、什么是ORM?概念: 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。详细介绍: 让我们从O/R开始。字母O起源于对象(Object),而R则来自于关系(Relational)。几乎所有的程序里面,都存在对象和关系数据 库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。 ?当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。 ?ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。 ?ORM技术特点: ?1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。 ?2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。?二、反射以及Attribute在ORM中的应用。什么是反射?简单点吧,反射就是在运行时动态获取对象信息的方法,比如运行时知道对象有哪些属性,方法,委托等等等等。反射有什么用呢?反射不但让你在运行是获取对象的信息,还提供运行时动态调用对象方法以及动态设置、获取属性等的能力。反射在ORM中有什么用呢?我 这里所讨论的ORM实现是通过自定义Attribute的方式进行映射规则的描述的。但是我们并不知道具体哪个对象需要对应哪个表,并且这些对象是独立于 我们的ORM框架的,所以我们只能通过自定义Attribute来定义映射规则,然后通过反射来动态获取这些映射规则。(这里只简单说明下概念:具体如何实现过程请看第四项。)三、创建一个数据库表和表对应的实体model。 传统的创建表和model实体的创建过程。 1.创建数据库表create table TB_People(?Pl_ID Int identity(1,1) primary key ,??PL_Age Int,??Pl_Sex Nvarchar(4),??Pl_LoginName nvarchar(30),??Pl_TrueName? nvarchar(30),??PL_Pwd? nvarchar(60))? 2.根据表结构一般我们会创建如下model实体using System;using System.Collections.Generic;using System.Linq;using System.Text;?namespace FuzhuKeji{?public class M_People?{??string _Pl_ID;??public string Pl_ID?{?get { return _Pl_ID; }?set { _Pl_ID = value; }?}??int _PL_Age;??public int PL_Age?{?get { return _PL_Age; }?set { _PL_Age = value; }?}??string _Pl_Sex;??public string Pl_Sex?{?get { return _Pl_Sex; }?set { _Pl_Sex = value; }?}??string _Pl_LoginName;??public string Pl_LoginName?{?get { return _Pl_LoginName; }?set { _Pl_LoginName = value; }?}??string _Pl_TrueName;??public string Pl_TrueName?{?get { return _Pl_TrueName; }?set { _Pl_TrueName = value; }?}??string _PL_Pwd;??public string PL_Pwd?{?get { return _PL_Pwd; }?set { _
文档评论(0)