我的开发框架(WinForm)2_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 我的开发框架(WinForm)2

我的开发框架(WinForm)2

 2013/8/27 10:58:24  liuyh208  博客园  我要评论(0)
  • 摘要:上篇文章简单的介绍了一下,我的一个开发框架。看的人还不少,多谢大家的关注,我继续介绍一下,模块和模块之间是怎么组织起来的。Data模块:该模块主要完成对数据的操作,采用仓储模式实现,在核心模块(Core.Data)中定义操作接口和基础类.主要的接口有IRepository,IUnitOfWork,IDbCnnFactory。所有的数据库操作都是针对实体进行的,一个实体在数据库中对应一个比,目前为了简化操作,不考虑实体关联的操作。这样更加容易理解,更容易上手。一、接口的定义1
  • 标签:for 开发 winform

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

Data模块:

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

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

一、接口的定义

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

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

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、手机上实现的都会移植过去,单机的项目会越来越少。
发表评论
用户名: 匿名