原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案

  原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案

原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案


数据日志介绍


我们在设计基于数据管理软件系统时,需要记录用户操作数据的历史,记录与跟踪数据变化、追溯数据修改历史,详细记录每次操作更新的内容,具体到字段,以及修改前与修改后的内容。


数据修改日志有多种实现方案,有通过程序实现的,比如在业务层或数据层搭建自动生成日志的代码,也有通过数据库实现的(使用触发器记录数据更新日志)。本文详细介绍第二种方案,C/S系统开发框架底层已经实现数据日志的生成与保存,用户不需要修改代码。


本方案的核心是通过一个日志配置表(配置数据日志字段),配置哪些表需要记录日志、修改哪些列的时候记录日志,然后程序根据配置信息,在用户保存数据时自动生成数据日志。此方案用户不需要编写任何代码,只需要配置跟踪修改的字段。


数据日志关键属性


操作用户、操作时间、表名、字段名、旧的数据、新的数据以及当前记录的主键值。




本文以开发框架提供的案例《采购订单》进行介绍。


贴图图片-data_log_数据日志00


日志自动配置界面


配置《采购订单》主表:CSFrameworkV5_Normal.dbo.tb_PO表。

选择数据库、资料表,勾选需要生成日志的字段,配置完成,点【保存数据】按钮,如下图:


贴图图片-data_log_数据日志


配置《采购订单》明细表:CSFrameworkV5_Normal.dbo.tb_POs表。


贴图图片-data_log_数据日志02



打开《采购订单》,修改内容,保存数据后,点【查看日志】按钮,如下图:


贴图图片-data_log_数据日志03



自动跳转到《数据修改日志》查询界面:


贴图图片-data_log_数据日志04



贴图图片-data_log_数据日志05





具体实现:


在BLL层的Update方法,调用LogEditHistory.WriteLog方法生成数据日志、保存数据日志。


C# Code:

/// <summary>
///保存数据
/// </summary>
public override SaveResult Update(DataSet saveData)
{
  SaveResult result
= _Bridge.Update(saveData); //交给数据层处理
  
  
//保存数据成功,生成数据修改日志
  
if (result.Success && _WriteDataLog)
  LogEditHistory.WriteLog(saveData, tb_PO.__TableName, _KeyFieldName);
  
  
return result;
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761





BLL层有个标记是否需要生成数据日志:


C# Code:

/// <summary>
/// 标记是否保存数据操作日志
/// </summary>
protected bool _WriteDataLog = false;




《采购订单》的BLL层构造器中将 _WriteDataLog = True,表示需要生成数据日志:



C# Code:

/// <summary>
/// 采购订单构造器
/// </summary>
public bllPO()
{
  _KeyFieldName
= tb_PO.__KeyName; //主键字段
  
_SummaryTableName = tb_PO.__TableName;//表名
  
_Bridge = this.CreateBridge();//实例化桥接功能
  
_WriteDataLog = true;//保存修改日志
  
}
  
  
//来源:C/S框架网 | www.csframework.com | QQ:23404761




作者在编写本文时发现以下2处Bug:


1. 打开LogEditHistory.cs文件,DoCompareTable方法有以下2处修改

1.1) logID变量放置到foreach循环内
1.2) sys_Log的TableName字段的值必须是当前表的表名。


贴图图片-data_log_数据日志06



2, 修改sp_sys_SearchLog存储过程,改LEFT JOIN


贴图图片-data_log_数据日志07



数据日志配置表(CSFrameworkV5_Normal数据库



SQL Code:

SELECT TOP 10 * FROM dbo.sys_Log ORDER BY isid DESC
SELECT TOP 10 * FROM dbo.sys_LogDtl ORDER BY isid DESC


//来源:C/S框架网 | www.csframework.com | QQ:23404761



sys_Log:数据日志主表。
sys_LogDtl:数据日志明细表。

主、丛表关联字段:GUID32


C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

C/S架构快速开发框架通用配置数据修改日志解决方案
C/S架构开源软件 - C#.NET+Winform+Dev+SQL快速开发框架
】简单快速软件开发平台,C/S架构二次开发平台
C/S架构Winform 代码生成器软件|C/S框架作品
】进销存软件开发模板基于C/S架构快速开发框架C#+Winform+DevExpress
.NET快速开发框架|C/S框架
C/S框架日志管理管理器(LogUserOperate)/本地日志(LogLocalException)/数据库日志(LogDB)
C/S架构轻量级快速开发框架WinFramework-VS解决方案和工程项目
C#框架推荐-C/S框架快速开发平台系列产品
NET开发框架,基于ADO.NET数据持久化快速开发框架平台-C/S框架产品
C/S框架网提供开源.NET开发架构.NET管理系统框架
C/S框架-WebService架构下分页查询数据解决方案
文档-Winform开发框架提供通用导入Excel功能界面|C/S框架
解决方案:VS无法连接到已配置开发Web服务器
C/S架构轻量级快速开发框架WinFramework架构
C#.Net局域网版本自动升级解决方案()
基于标准三层逻辑扩展C/S架构Winform开发平台()
ERP系统开发平台|基于C#.NET打造C/S系统快速开发框架
C/S开发框架MDI架构及Toolbar按钮共享()
产品】自己开发MES系统软件,MES开发架构及MES客户端快速开发框架平台