出处:http://www.cnblogs.com/lxinxuan/archive/2007/01/25/629947.html
之前的Demo好像多了一个文件,导致不能运行,现在已经更新,不好意思!:)2007年1月26号上午9时更新
学习O/RM,从最简单的例子开始...之一
学习O/RM,从最简单的例子开始... 之二
学习O/RM,从最简单的例子开始... 之三
学习O/RM,从最简单的例子开始...之四代码生成工具下载和最新Demo
[前言]
之所以贴在首页区,不是因为代码(来自国外一位同行的作品)如何精简,而是因为我希望通过这次由简到全的改造历程,能够让自己对ORM的理解和掌握有个新的提高。
此前,我同样把自己的一个很小很简单,甚至很“初学者”的“心得”贴到首页区,结果招来某些园客的抨击和鄙视。是的,那个问题是很“初学”,但我觉得,有的时候,忘记脑子里面原有的东西,以一个初学者的心态来看问题,一定会有一番新的收获。学习知识不是一件可耻的事情,没有人能够面面俱到。
希望能给O/RM的初学者带来一点帮助。
[改造计划]
1、不用每次遍历所有的映射文件,只需查找当前对象所映射的文件。
2、分层,做到与PetShop架构结合。
3、用Attribute实现。目前Demo例子是用xml做映射文件的。
|
|
好了以下就让我们看看Execute(T obj, string cnHint, string cmdName)方法都做了什么吧:
publicstaticstringExecute(Tobj,stringcnHint,stringcmdName)
{
DateTimestart=DateTime.Now;
MappingInfomap=MappingStore.TheInstance.GetMappingInfo(obj.ToString());//
CommandInfocmdInfo=map.Commands[cmdName];//获取操作命令
using(DbConnectioncn=DbConnectionStore.TheInstance.GetConnection(cnHint))//打开连接
{
DbCommandcmd=DbCommandStore.TheInstance.GetCommand(cnHint,cmdInfo.CommandText);//建立一个Command对象
cmd.Connection=cn;
_setParamValues(obj,cmd,cmdInfo);
cmd.ExecuteNonQuery();
_getParamValues(obj,cmd,cmdInfo);//执行
}
TimeSpanduration=DateTime.Now-start;
returnduration.ToString();
}
以上代码和一般的ADO.NET数据库操作类似。
下面再来看看映射文件的结构,以Emplyee为例:
<?xml version="1.0" encoding="utf-8" ?>
<object.mappings>
<object.mapping for="Employee" namespace="ClassLibrary1">
<command type="Insert">
<text>
dbo.EMPLOYEE_INS_SP
</text>
<parameters>
<add objMember="_employeeId" dbMember="@EmployeeId"/>
<add objMember="_firstName" dbMember="@FirstName" />
<add objMember="_lastName" dbMember="@LastName" />
<add objMember="_age" dbMember="@Age" />
</parameters>
</command>
<!--省略了Select和Update的映射,代码可见Demo-->
</object.mapping>
</object.mappings>
我们再看看MappingStore.cs这个文件中的类:
其中有三个类(我觉得这里就不是很符合规范,一个文件包含了三个类,但至少阅读起来的确比较方便)
·MappingStore类:负责加载映射文件,这里的Demo是遍历所有映射文件,然后通过GetMappingInfo(string typeName)方法返回一个MappingInfo类对象。
·MappingInfo类:负责加载映射文件中的所有Command,保存在Dictionary<TKey, TValue>中,其中TKey是CommandTtype,比如“Insert”、“Select”、“Update”等,TValue就是一个CommandInfo类对象。
·CommangInfo类:负责加载映射文件中的Parameters参数,也是保存在一个Dictionary< TKey, TValue>中,其中TKey是映射文件中dbMember,这个dbMember必须和数据库的字段名一致;TValue是objMember,对应Employee和Person这两个实体类的参数名。
下篇文章继续。
点击这里下载最原始的Demo[2007.1.25版]1、Demo详述:
首先看下类视图及代码说明:
分享到:
相关推荐
MP4/RM转换专家支持将几乎所有视频格式比如:RM/RMVB/VOB/AVI/MPEG/DAT/VCD/SVCD/DVD/ASF/WMV/MOV/QT/MP4/3GP/3GPP2/FLV/F4V/MKV/TS/TP/MTS/M2TS/DV/YUV等视频文件以最快速度转换为普通MP4机、SONY PSV/PSP、PS3、...
OSI/RM的简单介绍,功能的介绍。关于OSI/RM的讨论 实用,可作为考试的参考资料
自动生成数据库的实体,以.net解决方案的格式生成,包括业务模型,数据库实体,以及Web页面。很方便的,我使用之后。
AVI/MPG/RM/WMV,无损极速合并工具。
MP4/RM 全能视频转换专家(豪华版)2008 是一款...如RM/RMVB/VOB/AVI/MPEG/DAT/VCD/SVCD/DVD/ASF/WMV/MPG 等视频文件转换为普通MP4机、MP4手机、Sony PSP机、 iPod或DVD VCD等硬件支持的AVI、MP4、PMP、3GP、MPG格式。
AVI MPEG RM WMV Splitter(内含注册码) 可以无损分割大多数视频资源,分割速度快、保真度高,并可以按照自定义时间分割、均等分割、预览窗口选择分割三种模式,方便实用!
3gp/asf/asx/avi/flv/mow/mpg/ogg/rmvb/rm/mwv格式视频压缩文件整理打包上传 每个视频都比较小,只是拿过来验证一下是否可以转换、播放。需要高清勿下
AVI/MPEG/RM Joiner 将琐碎影片按顺序作结合整理,这个软件可以帮助你把零散的影片文件组合成为一个大的影片文件,这个程序支持 AVI, MPEG, MPEG-4,DivX以及 RM 格式影片,它可以将不同格式的影片组合。你可以任意...
RM3100地磁传感器 I2C接口驱动程序源代码,RM3100 单片机 驱动源码,可供学习设计参考。 int main(void) { BoardInit(); // PIC configurations + i2c,spi,uart,timers,interruptions inicializations int i = 0;...
MP4RM转换专家MP4RM转换专家MP4RM转换专家MP4RM转换专家MP4RM转换专家MP4RM转换专家MP4RM转换专家MP4RM转换专家MP4RM转换专家MP4RM转换专家
施耐德RM17/35系列控制继电器产品目录pdf,施耐德RM17/35系列控制继电器产品目录
光洋 I/O通信、远程I/O模块U-03RM/U-03RS技术资料pdf,光洋 I/O通信、远程I/O模块U-03RM/U-03RS技术资料
ls -l $1 | awk '{print $9}' >/tmp/rm_dir a=0 while [ $a -le $num ] do fname=`cat /tmp/rm_dir | head -$a | tail -1` cd $1;rm -rdf $fname & a=`expr $a + 1` done else echo "$1 is empty" fi
Dialog是.NET的另一个O / RM(对象到关系)映射工具。 但是,它也旨在成为一个完整的体系结构,通过为实际的快速应用程序开发提供基础,致力于提供可衡量的生产率收益。
一、 rm命令实现目的 防止使用系统rm命令时,由于误操作导致永久删除不可删除文件,导致系统或程序故障;降低故障风险。 三、 rm命令安装部署 rm命令支持的系统:含有bash解释器的linux系统(支持非默认) 获取rm...
RM5G变频器使用手册(RM5G系列)pdf,RM5G变频器使用手册(RM5G系列)
examples: rma test.rm check integrity of test.rm rma -f test.rm ... rma -j/audio.rm//video.rm/ test.rm join streams from audio.rm and video.rm and write multiplexed stream to test.rm.
13.56MHz芯片:SI522(兼容RC522,与FM17550/FM17520/RM522)-Si522数据手册_rev1.1.pdf
支持 mp3/wav/wma/ogg/ac3, avi/divx/xivd, mpeg/dat, wmv/asf/asx, rm/rmvb, mov/qt, mp4/m4v, 3gp/3g2 和 flv 文件。支持CD和CD-R。 MP3/AVI/MPEG/WMV/RM to Audio CD Burner is fast, high quality CD burning ...