三、实体层

实体对象通常是将底层的关系数据记录,表述为上层的数据对象,这一层次最主要的职责在于关系数据和实体之间的相互转换及实体的验证。从架构角度来讲我们可以通过下面的一些措施来帮助程序员开发:

1.开发实体对象基类,实现数据转换及验证框架,开发实体基类时我觉得至少要考虑以下几点:

 a.提供缺省构造方法以及通过标记实体属性映射,来实现从IDataReader\DataRow\其他对象来填充数据实体的构造方法。

 b.数据实体对象应为可序列化的,并且实现ICloneable接口。

 c.为了通过关键字比较实体对象,还应重写Equals和GetHashCode方法,另外为了更友好显示实体信息可重写ToString()方法。

   d.通过标记属性,在运行时通过反射实现实体单个属性的验证,而通过自定义的可重写的虚拟验证方法来实现复杂的,多属性的实体验证。

示例代码如下:

 

代码

 

2.编写生成工具,可以通过生成工具自动生成实体对象,生成文件时可以考虑以下措施

 a.生成的实体类,最好分成两个文件,一个为{EntityName}Base.cs,而另一个为{EntityName}.cs,其中{EntityName}.cs中的类从{EntityName}Base.cs继承,而{EntityName}Base.cs再从架构中实体对象基类继承,所有生成的代码就保存在{EntityName}Base.cs中,我们可以在{EntityName}.cs中通过编写代码来重写底层中定义的属性及自验证方法等。

   b.生成实体类时,最好直接从数据库中提取一些字段信息生成验证标记

示例代码如下:

 

代码