zoukankan      html  css  js  c++  java
  • 我的开发框架(WinForm)2

    上篇文章简单的介绍了一下,我的一个开发框架。看的人还不少,多谢大家的关注,我继续介绍一下,模块和模块之间是怎么组织起来的。

    Data模块:

    该模块主要完成对数据的操作,采用仓储模式实现,在核心模块(Core.Data)中定义操作接口和基础类. 主要的接口有IRepository,IUnitOfWork,IDbCnnFactory。

    所有的数据库操作都是针对实体进行的,一个实体在数据库中对应一个比,目前为了简化操作,不考虑实体关联的操作。这样更加容易理解,更容易上手。

    一、接口的定义

    1、IRepository接口,最基本、最重要的接口。通过它完成实体类的增删改查的操作。

     
    
    
    IRepository
    2、其中实体类必须继承EntityBase<Tid>或 EntityBase 类,TId 是指ID的类型,每个实体必须有个主键Id,
    EntityBase

        3、IDbCnnFactory接口主要完成数据库连接的维护工作

    IDbCnnFactory

        4、IUnitOfWork接口主要实现将多个数据库操作组合成一个工作单元, 对数据库来说就是一个事务。

    IUnitOfWork

    另外还有几个辅助的接口,同样是在Core.Data中定义

         ISqlRepository:类似于以前的SQLHelper类,它里面只是定义了一些执行sql的方法。

         ITableManager :用于数据表的维护。新建、删除、重建表操作。
         PageResult<TEntity>:分页结果类,主要保存 共有多少页,当前第几页,以及当前页的数据。

         UnitOfWork类:IUnitOfWork接口的实现类。

         IStatRepository:简单的数据统计.

    二、接口的实现

    Data.Oracle是针对Oracle数据库的一个实现。

    image

    Repository类实现了一下接口一个是默认ID类型的,一个是可自定义ID类型的.

    public class Repository<TEntity, Tid> : IRepository<TEntity, id>,IStatRepository<TEntity,Tid>,ISqlRepository 
    where TEntity : EntityBase<Tid>, new()
     
    public class Repository<TEntity> : Repository<TEntity, Guid>, IRepository<TEntity>, IStatRepository<TEntity>
     where TEntity : EntityBase, new()
       

    OracleDbCnnFactory 实现就比较简单了,和写ADO.Net一样.唯一注意的就是增加了MEF的导出标签

     [Export(typeof(IDbCnnFactory))] ,MEF的使用,园子里有很多好的文章,我就不班门弄斧了

    三、接口的使用

         比如我设计了一个菜单类,属性主要有显示的标题、关键字、序号等。

    //获得菜单类操作的Repository
       var rep = ApplicationEx.Container.GetRepository<MenuInfo>();
       //查询所有可用的菜单,并排序
    var ens=  rep.GetEntities(t => t.Enable == true).OrderBy(t=>t.PIndex);
    返回的是 IEnumerable<MenuInfo>
     
    关于ApplicationEx类,我们后面会介绍到。
    通过以上这些接口,我相信90%的数据库操作,都能满足。如果你的系统对性能要求比较高的话,我建议直接写sql+ADO.Net写,执行效率会更好,也好优化。

    我这样设计也考虑到Web程序的应用,毕竟程序能在web、手机上实现的都会移植过去,单机的项目会越来越少。

  • 相关阅读:
    ant脚本打jar包 自动获取时间以及项目svn版本号
    15分钟学会git基本的操作命令
    java后端模拟表单提交
    优秀js插件收藏
    javascript操作
    javascript常用方法整理--数组篇
    javascript exec方法
    javascript 拷贝
    自执行函数简单应用
    jsonp跨域原理解析
  • 原文地址:https://www.cnblogs.com/liuyh208/p/3284319.html
Copyright © 2011-2022 走看看