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的属性,则系统会自动处理其层次关系,如果在客户端则会自动实现级联触发。

 

    映射层的介绍结束了,写的不到不明白的地方,请大家批评指正

posted on 2010-08-30 14:02  光影传说  阅读(2098)  评论(0编辑  收藏  举报