系统回顾
前面的四篇文章我详细的介绍了AgileEAS.NET平台中统一数据访问(UDA)组件的用法,分析了两种数据处理流程的优缺点,以及基于懒惰模式的委托执行,事务处理方法,基本涵盖了基于数据库支持的业务系统的技术点。
从本文开始,我将带大家进入AgileEAS.NET平台的ORM组件应用案例之中,应用ORM实现与前面案例相同的功能,有关于AgileEAS.NET平台ORM组件的介绍请参考:
AgileEAS.NET之数据关系映射ORM及
AgileEAS.NET之ORM访问器。
开发流程
一、AgileEAS. NET平台ORM应用开发的第一步是数据对象的设计,就是规划所涉及的ORM对象的定义,涉及的数据库,是否使用基于接口驱动的数据层等一系列的策略,在AgileEAS.NET平台中提供了数据对象设计器,本步骤的实质工作是使用对象设计器进行数据实体的定义:
二、生成代码,本步骤是使用对象设计器生成当前设计好的模型的数据层代码,生成或者根据现在的对象模型定义文件生成相信的数据层代码:
三、处理ORM访问器,AgileEAS.NET平台中的ORM是实现与操作相分离的,在程序中要使用ORM实体操纵数据库,就必须的配置好ORM访问器,使用ORM访问器.操作(实体)或者实体.ORM访问器/实体.操作()实现ORM操作。
四、ORM操作,在配置好ORM访问器之后,就可以使用ORM访问器.操作(实体)或者实体.ORM访问器+实体.操作()的方法来完成ORM及数据库的操纵。
本文案例
本文的Demo代码数据库结构基于
一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-涉及的数据定义一文中的定义,在本案例中也就省去了设计实体对象模型的步骤,我们直接使用前文提供的demo.sdm文件生成代码,并且确定不生成数据接口层代码:
本案例完成的业务功能是实现读取商品字典的所有数据,并且实例演示增加、读取、修、删除一个新的商品字典记录,项目结构如下:
演示解决方案中ClassLibDemo.DAL.SQLServer是生成器生成的项目,ClassLib.OrmDemo是一个控件台项目,流程控制代码如下:
static void Main(string[] args) { System.Console.WriteLine("AgileEAS.NET平台ORM组件使用例子,按任意键开始..."); System.Console.Read(); System.Console.WriteLine("读取全表数据的例子:"); new TableDemo().DemoQuery(); System.Console.WriteLine("按任意键继续..."); System.Console.Read(); System.Console.WriteLine("演示数据查询(Query)的例子:"); new DataObjectDemo().DemoQuery(); System.Console.WriteLine("按任意键继续..."); System.Console.Read(); System.Console.WriteLine("演示数据插入(Insert)的例子:"); new DataObjectDemo().DemoInsert(); new DataObjectDemo().DemoQuery(); System.Console.WriteLine("按任意键继续..."); System.Console.Read(); System.Console.WriteLine("演示数据修改(Update)的例子:"); new DataObjectDemo().DemoUpdate(); new DataObjectDemo().DemoQuery(); System.Console.WriteLine("按任意键继续..."); System.Console.Read(); System.Console.WriteLine("演示数据删除(Delete)的例子:"); new DataObjectDemo().DemoDelete(); new DataObjectDemo().DemoQuery(); System.Console.WriteLine("按任意键结束。"); System.Console.Read(); }
有关本例子所涉及的数据表结构请参考
基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载:
http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文代码下载:
ORM.Demo1.rar。
链接
QQ群:116773358
本文转自 agilelab 51CTO博客,原文链接:http://blog.51cto.com/agilelab/603016