本文共 4205 字,大约阅读时间需要 14 分钟。
上篇我们将结果如何通过代码生成器来生成Model与数据访问层的代码,具体的
业务代码并没有生成。 如果还不知道如何使用ORM模型设计器请看:第一章:ORM设计工具的使用。
如果使用代码生成器生成的代码与自己写的ORM代码有些区别的地方在于,代码
生成器生成的文件的组织结构不同。
如下图:
这是代码生成器生成的代码,里面有个文件夹Generat,里面的文件与具体的类名
之间的关系是通过partial关键字区分。意思就是说,Generat文件夹中的每个类都与跟
目录下的类文件一一对应,我们来举个例子看看类文件的内容有什么不同吧
我们已IProduct为例吧,与之对应的是
Generat文件夹中IProduct.Generator.cs
IProduct.Generator.cs中代码的内容:一般包含具体的实体信息代码
public partial interface IProduct:EAS.Data.ORM.IEntity
{
/// <summary>
/// 记录编号 。 /// </summary> int Idn { get; set; }/// <summary>
/// 产品编码 。 /// </summary> string Code { get; set; }/// <summary>
/// 产品名称 。 /// </summary> string Name { get; set; }/// <summary>
/// 产品规格 。 /// </summary> string Spec { get; set; }/// <summary>
/// 大包装 。 /// </summary> string Bigunit { get; set; }/// <summary>
/// 小包装 。 /// </summary> string Smallunit { get; set; }/// <summary>
/// 包装规格 。 /// </summary> int Packrulr { get; set; }/// <summary>
/// 说明 。 /// </summary> string Description { get; set; } }IProduct.cs中的代码
/// <summary>
/// 实体接口 IProduct(Product)。 /// </summary> public partial interface IProduct { }由此可见这是AgileEAS.NET应用开发平台一个设计的技巧之处,以后为该业务实体添
加相应的业务代码时,IProduct.Generator.cs与IProduct.cs修改的内容是分离的,
虽然只是物理文件上的分离
这是我自己手写的代码工程文件:
public interface IProduct : EAS.Data.ORM.IEntity
{ }当然就没有那么多文件了,但是所有的东西都要自己写。具体的写法与代码生成器中的写法基本类同。数据访问层的代码类同,不过这里面有个需要注意的地
方,就是所有的业务实体类在定义实体时,必须定义一个与该实体相对应的实体表,默认情况下,查询统计等功能都是基于这个实体表来实现的。
如何在实体表中定义查询方法呢?这个我想大家都明白,肯定是在接口中定义查询方法,然后实现层实现这个查询方法,在业务实现的时候,就可
以调用相应的查询方法去实现相关的业务功能。
这一步主要是完成接口层与业务层之间的实体基本信息与相关的业务操作方法。
上面简单介绍了如何定义自己的查询方法,下面我就一步步的演示如何来做。
例如我再Iproduct实体对应的IproductList实体表上新建一个查询方法GetList()可以没有参数,没有返回值,默认情况下为void。因为这种情况下,默认返回
的是系统提供给实体的一个默认List列表,该列表是个DataTable的形式,可以通过foreach循环来循环表中的实体。实体都是对应一个DataRow。
我们来看一般情况,就是有查询条件的查询方法的定义。
/// <summary>
/// 没有返回值 /// </summary> void GetList(string name,int classID);//产品名称,产品分类进行检索,没有返回值,默认提供LIST集合。condition是AgileEAS.NET应用开发平台提供给开发人员一个通用的WHERE条件类,该类中提供了丰富的方法。详细您在使用的过程中会慢慢的发现其中的奥
秘。 condition.AddElement("数据库列名", "参数名", EAS.Data.ORM.ElementType.EqualTo);每个方法都有相应的说明。
最终的代码形式如下:
这里只是演示如何基于实体表书写查询方法。
直接带代码中书写业务代码:
上面都有详细的代码注释说明,相信大家都能看明白。
其他的业务代码的形式就和大家平时书写的业务代码的形式相同。
例如以产品编辑为例:
这里已大家最常见的窗体间传值来做
下面是实体的相应操作:
具体的详细代码,请下载相应源码。源码最后提供下载。
上图中的生命周期的解释有误,singleon的意思代表单例的意思。
这篇文章讲的概念也不是很多,但是作为基础篇,也希望大家能引起注意,因为没有它,我们后面的相应教程也无从谈起。通过这篇文章,我们必须要对这个平台
有一个感性和理性的认识。最重要的是要认清他的使用方法及这个平台给我带来的相应帮助,当然今天的例子也只是平台开发应用中的的最简单的一个实例,但是我们
要养成思考的习惯,比如其他的开发平台中的做法是怎么样的开发模式,而自己在项目过程中又是什么样的开发模式,开发平台给我们做程序的过程中带来了什么,改
进了什么,或者您认为对目前这个开发平台有更好的意见和建议都可以提出来,当然由于本人才疏学浅,可能很多地方没有讲清楚,如果有误之处还希望各位能够批评
指正!
希望对该平台感兴趣的朋友们,可以有个简单的认识,深刻的认识请持续关注。
本文转自何戈洲博客园博客,原文链接:http://www.cnblogs.com/hegezhou_hot/archive/2010/09/09/1822312.html,如需转载请自行联系原作者