• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

织梦吧 - dedecms,网站模板,建站教程,图片素材免费下载

DedeCMS视频教程
当前位置: 织梦吧 > 编程与数据库 > net编程 >

.NET分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇)(2)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-06-27点击:

因为不同的表产生不同的数据实体,但是Richard还想使得AddSingleDataEntity这个方法可以接受任何的数据实体,所以此时很有必要对数据实体进行抽象。所以Richard想到了定义一个接口:IDataEntity,打算让所有通过ORM生成的数据实体都继承这个接口。而且 Richard还想到:

1.如果BLL直接引用DAL使用的,那么IDataEntity可能会在BLL中出现的。

2.如果BLL通过repository去DAL中获取数据,那么到时候BLL可能都不会直接引用DAL,但是BLL最终还是得使用数据做事情,所以IDataEntity还是会在BLL中出现,所以,IDataEntity接口最好定义在一个公共的地方。

Richard决定新建一个Common的类库,加入IDataEntity接口的定义,现在这个接口里面什么都没有,只是一个标记而已,表明继承这个接口的类就是数据实体类。

AddSingleDataEntity(IDataEntity dataEntity);

还有一点就是尽量的使用类型安全的方法,于是Richard把方法改成了范型方法:

AddSingleDataEntity<T>(T dataEntity) where T:IDataEntity,class,new();

至于T 的那些约束:T:IDataEntity,class,new(),是考虑到了Linq和EF中对数据实体的一些要求。

一般的Add方法都是返回添加是否成功,true或者false,方法再次改造:

bool AddSingleDataEntity<T>(T dataEntity) where T:IDataEntity,class,new();

然后Richard就写出了上面列出的一些方法的定义:

bool AddSingleDataEntity<T>(T dataEntity) where T : class,IDataEntity, new();
bool AddDataEntityList<T>(List<T> dataEntityList) where T : class,IDataEntity, new();
bool DeleteDataEntityList<T>(List<T> dataEntityList) where T : class,IDataEntity, new();
bool DeleteSingleDataEntity<T>(T dataEntity) where T : class,IDataEntity, new();
bool UpdateSingleDataEntity<T>(T dataEntity) where T : class,IDataEntity, new();
bool UpdateDataEntityList<T>(List<T> dataEntityList) where T : class,IDataEntity, new();

至于GetDataEntityList,按照之前的查询对象的想法,传入一个IQuery的接口:

List<T> GetDataEntityList<T>(IQuery query)where T : class,IDataEntity, new();

 

2.对基本的操作的进一步的思考

确实,上面那些基本操作是没有什么问题的,现在Richard又考虑到了另外的一些问题,还是以AddSingleDataEntity方法为例:

a.有些时候,不仅仅要知道插入数据是否成功,而且还想返回新加入数据在数据库中的主键信息来做其他的用途。怎么办?再来查询一次?

标签: 实战 DAL 前篇
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 tom@tiptop.cn ,  QQ