博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

个人开发框架总结(一)

Posted on 2009-05-02 14:00  faib  阅读(3828)  评论(34编辑  收藏  举报

    趁着五一放假,来写几篇文章,因为最近实在实在是太忙了。

    在开发过程中,大家可能都发现,形成一套个人开发风格是相当重要,这也可以延伸为整个团队的开发模式,甚至形成一个有形的开发框架。

    我经过这一两年的摸索,不断的完善,现在大体形成了几个东东,自己感觉还不错,所以想贴出来与大家一起分享,如有需要的朋友,可以直接与我联系。

    大体有以下几个类库:

    FaibClass.Data 数据访问库

    FaibClass.Common.Windows WinForm框架库

    FaibClass.Windows.Forms WinForm控件库(目前只有TreeList及一些TextBox控件)

    FaibClass.Update 在线更新库

    在以后的几天里将分别做一些介绍

一、FaibClass.Data

    主要是提供数据访问操作的类库,可支持SqlServer、Oracle、及各种OleDb数据库。
    DataHelper 核心类 提供各种数据访问方法。先说一下它的几个方法和属性:

        ExecuteDataTable 填充数据到DataTable,共12种重载
        ExecuteNonQuery 执行Sql语句
        ExecuteReader 执行查询语句返回IDataReader
        ExecuteScalar 执行查询,返回当个结果
        FillDataset 填充DataSet,共12种重载
        FillModelList 填充DataList,共12种重载
        Update 更新DataTable或DataSet,共6种重载
        BeginTransaction 开始事务,支付分布式事务
        CommitTransaction 提交事务
        RollbackTransaction 回滚事务
        CreateParameters 创建参数集,因为使用存储过程时SqlServer和Oracle的参数名称不一样,故用这个方法生成
        OpenUpdateBag 打开更新开关,在使用Update前,要使用这个方法把相应的sql语句保存到内存中,以在Update时能够更新到数据库
        CloseUpdateBag 关闭更新开关

        ParameterPrefix 当前数据操作的存储过程参数名称的前缀,如SqlServer的@和Oracle的:

        下面是具体的操作类型,SqlServer、Oracle、OleDb都是继承自DataHelper的,但并未为每一个操作类都写出各种数据操作的方法,这也主要是为了好维护,这几个类同时实现IDataProvider接口,这个接口就是为每种类型提供DbConnection、DbParameter、DataAdapter、DbCommand等。如SqlServer里是这样写到的:

Code

    这样,每一个类就好维护了,Oracle就使用OracleConnection,OleDb就使用OleDbConnection。

    Parameter 存储过程参数类,这跟System.Data里的差不多,都是实现同样的一个功能,只是说使用这个的时候,ParameterName不用具体的加入@或:这样的前缀。

    ParameterCollection 存储过程参数集合类,这里面特别的有几个方法
    FromDataModel 从模型转换为存储参数。可以根据具体的模型,将所有属性转换为存储过程参数,以为添加或修改作准备。
    Format 可以格式化Sql查询语句,比如在使用添加或修改的时候,可以这样使用

dataHelper.ExecuteNonQuery(params.Format("insert into table({0}) values({1})"), params);

dataHelper.ExecuteNonQuery(
params.Format("update table set {0}"), params);

 

    BaseModel 数据模型基类,所有的数据模型都是继承这个类,如TB_BUY_BILL.cs

Code

 

    上面已经提到DataModelList这个类了,实际就是一个List<T>泛型,其中提供了几个方法:
    Sort 按指定的字段名进行排序。
    Select 根据给定的条件查询出子集合,类似于DataTable.Select。
    Compute 根据给定的条件及计算求和或平均等。
    Group 对字段进行分组。
    如:


Code

    BaseDataAccess 数据操作类,这里面就整合了一些发新建实体、修改实体等方法。
    Create 新建实体
    Update 更新实体,共4种重载
    Delete 删除实体
    DeleteBy 删除多个实体
    Get 获得实体,共7种重载
    IsExitst 判别实体是否存在,共4种重载
    Select 查询实体集,共9种重载

    NewEntity 新实体
    PageArgs 分页参数

    相关的例子TB_BUY_BILL_DA.cs

 

Code

    DataColumn 数据列映射类,主要标明数据字段的各种属性,比如数据类型等,在以上代码中,已经看到GetDataColumn方法了。

    EnumTextAttribute 枚举说明特性类,主要是添加在枚举上的,方便数据查询显示时直接转为中文说明。
    GetText 获得枚举值下的中文说明
    GetValue 根据中文说明获得对应的枚举值 

    QueryBuilder 查询构造器类,主要是构造查询条件,where后面的,使用方法类似StringBuilder。
    Append 追加查询条件
    BeginBracket 添加一个左括号
    EndBracket 添加一个右括号

    下面是Configuration下的几个类,主要提供连接串的存储方式
    AppConnectionConfig 连接串是存储在App.setting文件中的
    BinaryConnectionConfig 连接串是存储在bin文件里的,读或写的时候key取"a"...."h"。
    RegConnectionConfig 连接串是存储在注册表里的
    SysXmlConnectionConfig 连接串是存储在系统目录里的xml文件里的
    XmlConnectionConfig 连接串是存储在任意位置的xml文件里的
    ConfigurationCreator 从配置文件里创建实例,这里相关的类还有:实例创建配置节-InstanceSettingsSection、实例创建配置集合-InstanceSettingsCollection、实例创建配置元素-InstanceSettings
    它的工作过程如下:首先在在app.config里配置

Code

    这样,DA里就可以改成
Code

    好了,Data这个类就介绍到这里了,相关的例子在以后的文章中会给出的,下一篇介绍一下Common.Windows类库了。
    http://www.cnblogs.com/faib/archive/2009/05/02/1447783.html