【飞秋】OR层代码组织介绍
2010-08-30 23:01
267 查看
OR层代码组织和映射介绍
即时通讯软件OR层也是老生常谈了,有的朋友说我是重复造车轮,只是OR这部分写的太早了,更主要是的与BLL层代码的集成,非常方便,所以呢,虽然后来NH和IB出来了我没有换,MS的Linq出来了,我依然没有换,经过这几年的应用,更坚定了自己的想法。
与原来框架的主要差异是把数据映射由编码文件改为配置文件,当初考虑是方便写代码,用了之后才发觉这样太不灵活了,一直托到现在才改
从结构上来说,与原来的框架没有太多的差异,主要是把配置由自定义属性改到了配置文件。另外加入了可配置的数据校验,在Column属性中加入了一个ReadOnly的属性,对于关联关系和关联表的处理会更方便。
<Property PropertyName="Name" FieldName="name" Description="姓名">
<Column TableName="User" ColumnName="Name" DbType="AnsiString" Length="50" ReadOnly=”true”
/>
</Property>
其中,ReadOnly默认值为false,当改为true时,如果更新数据库,此列则会跳过。加载的时候,可以根据实际需要配置成同步加载或是延迟加载。
另外在Property属性内加入校验功能,支持大小/正则表达式/范围/时间等验证
对于配置文件,默认放在Config/Map/目录下,规则为类的全名+.Config的文件:EES.H.Data.User.Config
数据库的定义连接字符串,通过SourceKey进行设置。 <SourceKey>House</SourceKey>
数据库的连接字符串配置在Config/DataSourceConfig.Config 的文件中:
<DataSourceConfig DataSourceType="MSSqlServer" DataSourceKey="House">
<ConnectionString>server=(local);database=House;Trusted_Connection=true;</ConnectionString>
</DataSourceConfig>
在加载的时候,配置文件会自动被加载,系统不需要显式处理,这点与常见的NH和IB映射应该有一定的不同,并且系统会自动处理Session的打开和关闭,以及处理多数据源等,这些会以业务层代码里面再作介绍
实体类如下:
[EESData()]
[Contract()]
public class User : EESObject
{
protected String name;
/// <summary>
/// 姓名
/// </summary>
[Member(3)]
public virtual String Name
{
get
{
return name;
}
set
{
if ((name != value))
{
this.OnPropertyChanging("Name");
name = value;
this.OnPropertyChanged("Name");
}
}
}
}
对于实体类,大同小异,都是从EESObject继承而来
EESData标注此类为数据类,另外也是为了通过工具生成界面层的视图。
Contract标注此类可远程序列化,Member为属性的可序列化,如果没有此自定义属性,则此属性不会进行远程传输序列化。
OnPropertyChanging和OnPropertyChanged在服务器端的作用不大,主要是对于客户端的双向绑定。
从这几个属性,可以看的出来,数据映射类为标准的一般类,由于中间用到了AOP,所以如果要用到校验功能,则需要在属性前加 virtual 。
对于级联的处理处理方式,采用一级对一级负责的处理方式,就如在部队里的处理一样。
对于一对多和一对一的处理采用 关系配置处理。
对于主从关系的处理,还需要手工添加Slave的自定义属性,在界面生成的时候,工具会自动生成主从关系的界面。还要在属性前增加 virtaul的属性,则系统会自动处理其层次关系,如果在客户端则会自动实现级联触发。
映射层的介绍结束了,写的不到不明白的地方,请大家批评指正
关注技术文章飞秋:http://www.freeeim.com/,24小时专业转载。
相关文章推荐
- OR层代码组织和映射介绍
- EES 框架 BLL层代码组织与介绍
- Objective-C文件组织介绍(附代码)
- Hive代码组织及架构简单介绍
- jeesite快速开发平台(六)----代码生成模块介绍及使用
- PHP OOP面向对象详细介绍总结(代码实例子)
- .Net 代码安全保护产品DNGuard HVM介绍
- C语言sscanf()函数的介绍和实例代码学习
- 生成对抗网络介绍(附TensorFlow代码)
- C程序的结构化组织方式介绍
- 第六章 组织、注释、引用代码(二)
- 项目开发中源代码树的组织
- php缓存技术详细介绍及php缓存的实现代码
- Unity3D如何有效地组织代码
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map)
- C语言代码组织基础
- opengGL深度测试介绍及代码测试
- 编写高性能 .NET 代码 第一章:工具介绍 -- Performance Counters(性能计数器)
- JAVA JNI原理详细介绍及简单实例代码
- Javascript 类、命名空间、代码组织代码