在信息的交换过程中,总是有此相同相似的功能,由于业务的各自不同,由同一类型来处理诸如增删改查等常见的信息处理方式。从日常的对些类行为操作为生成的类分析,大量雷同的代码遍布整个项目。框架中xxxHandel的类,是处理此类问题的操作类型,简化了业务类的复杂度。

xxxHandel类采用大量泛型方法,各业务可从此类型派生,这样各业务类就有了xxxHandel类所具有的能力,同时这些方法均为虚方法,派生类可以根据实际情况调整,修改或增加,以满足开发人员的需要。

一、BusinessBaseHandle

BusinessBaseHandle类是服务类与前端之间的桥梁

/// <summary>

/// 通用执行基类

/// </summary>

/// <typeparam name="Es">BLL列表类</typeparam>

/// <typeparam name="E">BLL类</typeparam>

/// <typeparam name="Ds">UI服务列表类</typeparam>

/// <typeparam name="D">UI服务DTO类</typeparam>

public abstract class BusinessBaseHandle<Es, E, Ds, D>

where Es : BusinessListBase<E>

where E : BusinessBase

where D : BaseUIDto<D, E>

where Ds : BaseListUIDto<D, E>

{

}

(一)属性

1、protected ILifetimeScope _lc:受保护的属性Autofac的一个接口,以满足类型内部支持IOC功能,使操作对泛型类型的约束最低;

2、AtkDataportalcontext:数据门户上下文,主要用要支持WCF服务;

(二)方法

1、Delete

public virtual OperateState Delete(ExpConditions<D> znexp)

{

var item = _lc.Resolve<D>();

return Delete(item, znexp);

}

其中(ExpConditions<D>在Atk.CustomExpression中定义,在后续文档中会单独介绍;

2、Insert

public virtual OperateState Insert(D item, ExpConditions<D> znexp)

{

if (!_power.Create)

{

return OperateState.FailState("没有增加记录权限!");

}

return ItemHandleState(item, _dataportal.Insert, znexp);

}

3、Update

public virtual OperateState Update(D item, ExpConditions<D> znexp)

{

if (!_power.Edit)

{

return OperateState.FailState("没有编辑记录权限!");

}

//强制清除条件,以使记录更新为当前记录,而非批量更新

znexp.ClearWhere();

return ItemHandleState(item, _dataportal.Update, znexp);

}

4、Delete

public virtual OperateState Delete(ExpConditions<D> znexp)

{

var item = _lc.Resolve<D>();

return Delete(item, znexp);

}

5、相关批处理方法,如BatchUpdate,BatchDelete ,BatchUpdate是为支持前端面为表格同时表格支持此类行为时,简化业务处理的难度;

6、 GetNew()方法,New一个当前所支持的业务类,使用的是Aufac反射;

(三)、示例

以下当我们要使用此操作类型时示例代码,AzCustomersWebHandle是一个继承于BusinessBaseHandle

public sealed class  AzCustomersWebHandle:BusinessBaseHandle<AzCustomersListEntity,

AzCustomersEntity,

AzCustomersListWebDto ,

AzCustomersWebDto>

{}

在业务操作时(以下是在AzCustomersController中定义)

private readonly AzCustomersWebHandle _handle = AzCustomersWebHandle.GetWebHandle();

public IActionResult Edit(string Id)

{

var bizExp = _handle.GetExp();

bizExp.AddAndWhere(s => s.CustomerID == Id);

var model = _handle.Get(bizExp);

return View(model);

}

二、BusinessBaseSpHandle

BusinessBaseSpHandle用于处理可返回结果的存储过程的操作类

/// <summary>

/// 存储过程查询类操作基类

/// </summary>

/// <typeparam name="Es">BLL列表类</typeparam>

/// <typeparam name="E">BLL类</typeparam>

/// <typeparam name="Ds">UI服务列表类</typeparam>

/// <typeparam name="D">UI服务DTO类</typeparam>

public abstract class BusinessBaseSpHandle<Es, E, Ds, D>

where Es : BusinessListBase<E>

where E : BusinessBase

where D : BaseUISpDto<D, E>

where Ds : BaseListUISpDto<D, Ds, E, Es>

{

}

由于处理的是存储过程,因而基于通常的场景,这类存储过程返来的一系列记录信息。所以BusinessBaseSpHandle只定了GetList方法。

三、BusinessBaseExecHandle

BusinessBaseExecHandle用于执行存储过程,用类存储过程通常是一系列SQL操作,并且不返回结果。其定义为:

public abstract class BusinessBaseExecHandle<E, D>

where E : BusinessBase

where D : BaseUIExecDto<E>

{ }

该类只定义了一个Execute(D item)方法;

----

ATK

1、一个完整支持分布式服务框架;

2、代码生成工具,可快速生成基于服务框架的应用;

3、其他支持库

4、完整代码可在GitHub的https://github.com/azthinker ;开源中国 https://gitee.com/azthinker

目标:使应用开发,低代码、高效率、快迭代

有兴趣的请在QQ群中参与讨论、联系作者  QQ群名称:ATK高效开发 ,QQ群号:747049962

也可发邮件至:azthinker@sina.com

Demo中的数据库、编译好的代码工具链接:https://pan.baidu.com/s/1B9RQm7_-SFyhLb_HLIGs0w 密码:85q6

ATK Demo使用的数据库 : https://download.csdn.net/download/xftyyyyb/10675497

ATK自动代码工具 :https://download.csdn.net/download/xftyyyyb/10675490

最新文章

  1. PHP责任链设计模式
  2. 创建第一个Hiberntae工程
  3. 求1+2+3+...+n
  4. 学习练习 session练习
  5. 实习感悟——SQL语句
  6. jquerymobile UI使用
  7. Android横竖屏切换总结
  8. BZOJ 1072 [SCOI2007]排列perm
  9. Javascript 追本溯源
  10. 第16讲- UI组件之TextView
  11. dev gridcontrol把event事件转换成命令
  12. ABP文档 - Quartz 集成
  13. NOIP2009T3最优贸易
  14. 设计模式原则(3)--Dependency Inversion Principle(DIP)--依赖倒转原则
  15. Linux系统网络基本配置
  16. Knowing is not enough; we must apply. Willing is not enough; we must do.
  17. 解决Java Web项目中Word、Excel等二进制文件编译后无法打开的问题
  18. java List集合记录 ArrayList和LinkedList的区别
  19. nginx源码分析:module机制
  20. Windows 8.1 硬盘安装 Ubuntu14.04 双系统参考教程及注意事项

热门文章

  1. java基础之登录程序
  2. solidity合约面向对象
  3. C# HashTable 使用用法详解
  4. MongoDB(online) 优化
  5. Java NIO(六) Selector
  6. windows下使用xerces -c解析XML
  7. 仿照jQuery写一个关于选择器的框架(带了注释,请多多指教~)
  8. c#中 定时器周期执行某事件 以及,重置 定时器重新计时的方法
  9. dedecms 去掉栏目页的预览功能
  10. SONA Topology