• 如何实现系统记录变更的记录功能


    在程序操作中,我们需要把记录变更操作记录下来,通用权限管理系统正好有这个表,下面参照这个表创建自己的修改记录表,表结构如下

    用代码生成器的截图如下

    实体类

      1 //-----------------------------------------------------------------------
      2 // <copyright file="BASEMODIFYRECORDEntity.cs" company="ZTO">
      3 //     Copyright (c) 2014 , All rights reserved.
      4 // </copyright>
      5 //-----------------------------------------------------------------------
      6 
      7 using System;
      8 using System.Collections.Generic;
      9 using System.Linq;
     10 using System.Data;
     11 
     12 namespace DotNet.Business
     13 {
     14     using DotNet.Utilities;
     15 
     16     /// <summary>
     17     /// BASEMODIFYRECORDEntity
     18     /// 
     19     /// 
     20     /// 修改纪录
     21     /// 
     22     /// 2014-11-04 版本:1.0 SongBiao 创建文件。
     23     /// 
     24     /// <author>
     25     ///     <name>SongBiao</name>
     26     ///     <date>2014-11-04</date>
     27     /// </author>
     28     /// </summary>
     29     public partial class BASEMODIFYRECORDEntity : BaseEntity
     30     {
     31         private string nEWKEY = string.Empty;
     32         /// <summary>
     33         /// NEWKEY
     34         /// </summary>
     35         public string NEWKEY
     36         {
     37             get
     38             {
     39                 return nEWKEY;
     40             }
     41             set
     42             {
     43                 nEWKEY = value;
     44             }
     45         }
     46 
     47         private string nEWVALUE = string.Empty;
     48         /// <summary>
     49         /// NEWVALUE
     50         /// </summary>
     51         public string NEWVALUE
     52         {
     53             get
     54             {
     55                 return nEWVALUE;
     56             }
     57             set
     58             {
     59                 nEWVALUE = value;
     60             }
     61         }
     62 
     63         private string cOLUMNDESCRIPTION = string.Empty;
     64         /// <summary>
     65         /// COLUMNDESCRIPTION
     66         /// </summary>
     67         public string COLUMNDESCRIPTION
     68         {
     69             get
     70             {
     71                 return cOLUMNDESCRIPTION;
     72             }
     73             set
     74             {
     75                 cOLUMNDESCRIPTION = value;
     76             }
     77         }
     78 
     79         private string createBy = string.Empty;
     80         /// <summary>
     81         /// CREATEBY
     82         /// </summary>
     83         public string CreateBy
     84         {
     85             get
     86             {
     87                 return createBy;
     88             }
     89             set
     90             {
     91                 createBy = value;
     92             }
     93         }
     94 
     95         private string oLDKEY = string.Empty;
     96         /// <summary>
     97         /// OLDKEY
     98         /// </summary>
     99         public string OLDKEY
    100         {
    101             get
    102             {
    103                 return oLDKEY;
    104             }
    105             set
    106             {
    107                 oLDKEY = value;
    108             }
    109         }
    110 
    111         private DateTime? createOn = null;
    112         /// <summary>
    113         /// CREATEON
    114         /// </summary>
    115         public DateTime? CreateOn
    116         {
    117             get
    118             {
    119                 return createOn;
    120             }
    121             set
    122             {
    123                 createOn = value;
    124             }
    125         }
    126 
    127         private string oLDVALUE = string.Empty;
    128         /// <summary>
    129         /// OLDVALUE
    130         /// </summary>
    131         public string OLDVALUE
    132         {
    133             get
    134             {
    135                 return oLDVALUE;
    136             }
    137             set
    138             {
    139                 oLDVALUE = value;
    140             }
    141         }
    142 
    143         private string createUserId = string.Empty;
    144         /// <summary>
    145         /// CREATEUSERID
    146         /// </summary>
    147         public string CreateUserId
    148         {
    149             get
    150             {
    151                 return createUserId;
    152             }
    153             set
    154             {
    155                 createUserId = value;
    156             }
    157         }
    158 
    159         private string rECORDKEY = string.Empty;
    160         /// <summary>
    161         /// RECORDKEY
    162         /// </summary>
    163         public string RECORDKEY
    164         {
    165             get
    166             {
    167                 return rECORDKEY;
    168             }
    169             set
    170             {
    171                 rECORDKEY = value;
    172             }
    173         }
    174 
    175         private string cOLUMNCODE = string.Empty;
    176         /// <summary>
    177         /// COLUMNCODE
    178         /// </summary>
    179         public string COLUMNCODE
    180         {
    181             get
    182             {
    183                 return cOLUMNCODE;
    184             }
    185             set
    186             {
    187                 cOLUMNCODE = value;
    188             }
    189         }
    190 
    191         private Decimal? id = null;
    192         /// <summary>
    193         /// ID
    194         /// </summary>
    195         public Decimal? Id
    196         {
    197             get
    198             {
    199                 return id;
    200             }
    201             set
    202             {
    203                 id = value;
    204             }
    205         }
    206 
    207         private string tABLEDESCRIPTION = string.Empty;
    208         /// <summary>
    209         /// TABLEDESCRIPTION
    210         /// </summary>
    211         public string TABLEDESCRIPTION
    212         {
    213             get
    214             {
    215                 return tABLEDESCRIPTION;
    216             }
    217             set
    218             {
    219                 tABLEDESCRIPTION = value;
    220             }
    221         }
    222 
    223         private string tABLECODE = string.Empty;
    224         /// <summary>
    225         /// TABLECODE
    226         /// </summary>
    227         public string TABLECODE
    228         {
    229             get
    230             {
    231                 return tABLECODE;
    232             }
    233             set
    234             {
    235                 tABLECODE = value;
    236             }
    237         }
    238 
    239         /// <summary>
    240         /// 从数据行读取
    241         /// </summary>
    242         /// <param name="dr">数据行</param>
    243         protected override BaseEntity GetFrom(IDataRow dr)
    244         {
    245             GetFromExpand(dr);
    246             NEWKEY = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldNEWKEY]);
    247             NEWVALUE = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldNEWVALUE]);
    248             COLUMNDESCRIPTION = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldCOLUMNDESCRIPTION]);
    249             CreateBy = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldCreateBy]);
    250             OLDKEY = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldOLDKEY]);
    251             CreateOn = BaseBusinessLogic.ConvertToNullableDateTime(dr[BASEMODIFYRECORDEntity.FieldCreateOn]);
    252             OLDVALUE = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldOLDVALUE]);
    253             CreateUserId = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldCreateUserId]);
    254             RECORDKEY = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldRECORDKEY]);
    255             COLUMNCODE = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldCOLUMNCODE]);
    256             Id = BaseBusinessLogic.ConvertToNullableDecimal(dr[BASEMODIFYRECORDEntity.FieldId]);
    257             TABLEDESCRIPTION = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldTABLEDESCRIPTION]);
    258             TABLECODE = BaseBusinessLogic.ConvertToString(dr[BASEMODIFYRECORDEntity.FieldTABLECODE]);
    259             return this;
    260         }
    261 
    262         ///<summary>
    263         /// 
    264         ///</summary>
    265         public static string TableName = "BASEMODIFYRECORD";
    266 
    267         ///<summary>
    268         /// NEWKEY
    269         ///</summary>
    270         public static string FieldNEWKEY = "NEWKEY";
    271 
    272         ///<summary>
    273         /// NEWVALUE
    274         ///</summary>
    275         public static string FieldNEWVALUE = "NEWVALUE";
    276 
    277         ///<summary>
    278         /// COLUMNDESCRIPTION
    279         ///</summary>
    280         public static string FieldCOLUMNDESCRIPTION = "COLUMNDESCRIPTION";
    281 
    282         ///<summary>
    283         /// CREATEBY
    284         ///</summary>
    285         public static string FieldCreateBy = "CreateBy";
    286 
    287         ///<summary>
    288         /// OLDKEY
    289         ///</summary>
    290         public static string FieldOLDKEY = "OLDKEY";
    291 
    292         ///<summary>
    293         /// CREATEON
    294         ///</summary>
    295         public static string FieldCreateOn = "CreateOn";
    296 
    297         ///<summary>
    298         /// OLDVALUE
    299         ///</summary>
    300         public static string FieldOLDVALUE = "OLDVALUE";
    301 
    302         ///<summary>
    303         /// CREATEUSERID
    304         ///</summary>
    305         public static string FieldCreateUserId = "CreateUserId";
    306 
    307         ///<summary>
    308         /// RECORDKEY
    309         ///</summary>
    310         public static string FieldRECORDKEY = "RECORDKEY";
    311 
    312         ///<summary>
    313         /// COLUMNCODE
    314         ///</summary>
    315         public static string FieldCOLUMNCODE = "COLUMNCODE";
    316 
    317         ///<summary>
    318         /// ID
    319         ///</summary>
    320         public static string FieldId = "Id";
    321 
    322         ///<summary>
    323         /// TABLEDESCRIPTION
    324         ///</summary>
    325         public static string FieldTABLEDESCRIPTION = "TABLEDESCRIPTION";
    326 
    327         ///<summary>
    328         /// TABLECODE
    329         ///</summary>
    330         public static string FieldTABLECODE = "TABLECODE";
    331     }
    332 }

    管理类

      1 //-----------------------------------------------------------------------
      2 // <copyright file="BASEMODIFYRECORDManager.Auto.cs" company="ZTO">
      3 //     Copyright (c) 2014 , All rights reserved.
      4 // </copyright>
      5 //-----------------------------------------------------------------------
      6 
      7 using System;
      8 using System.Collections.Generic;
      9 using System.Linq;
     10 using System.Data;
     11 
     12 namespace DotNet.Business
     13 {
     14     using DotNet.Business;
     15     using DotNet.Utilities;
     16 
     17     /// <summary>
     18     /// BASEMODIFYRECORDManager
     19     /// 
     20     /// 
     21     /// 修改纪录
     22     /// 
     23     /// 2014-11-04 版本:1.0 SongBiao 创建文件。
     24     /// 
     25     /// <author>
     26     ///     <name>SongBiao</name>
     27     ///     <date>2014-11-04</date>
     28     /// </author>
     29     /// </summary>
     30     public partial class BASEMODIFYRECORDManager : BaseManager, IBaseManager
     31     {
     32         /// <summary>
     33         /// 构造函数
     34         /// </summary>
     35         public BASEMODIFYRECORDManager()
     36         {
     37             if (base.dbHelper == null)
     38             {
     39                 base.dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType, BaseSystemInfo.UserCenterDbConnection);
     40             }
     41             if (string.IsNullOrEmpty(base.CurrentTableName))
     42             {
     43                 base.CurrentTableName = BASEMODIFYRECORDEntity.TableName;
     44             }
     45             base.PrimaryKey = "Id";
     46         }
     47 
     48         /// <summary>
     49         /// 构造函数
     50         /// <param name="tableName">指定表名</param>
     51         /// </summary>
     52         public BASEMODIFYRECORDManager(string tableName)
     53         {
     54             base.CurrentTableName = tableName;
     55         }
     56 
     57         /// <summary>
     58         /// 构造函数
     59         /// </summary>
     60         /// <param name="dbHelper">数据库连接</param>
     61         public BASEMODIFYRECORDManager(IDbHelper dbHelper): this()
     62         {
     63             DbHelper = dbHelper;
     64         }
     65 
     66         /// <summary>
     67         /// 构造函数
     68         /// </summary>
     69         /// <param name="userInfo">用户信息</param>
     70         public BASEMODIFYRECORDManager(BaseUserInfo userInfo) : this()
     71         {
     72             UserInfo = userInfo;
     73         }
     74 
     75         /// <summary>
     76         /// 构造函数
     77         /// </summary>
     78         /// <param name="userInfo">用户信息</param>
     79         /// <param name="tableName">指定表名</param>
     80         public BASEMODIFYRECORDManager(BaseUserInfo userInfo, string tableName) : this(userInfo)
     81         {
     82             base.CurrentTableName = tableName;
     83         }
     84 
     85         /// <summary>
     86         /// 构造函数
     87         /// </summary>
     88         /// <param name="dbHelper">数据库连接</param>
     89         /// <param name="userInfo">用户信息</param>
     90         public BASEMODIFYRECORDManager(IDbHelper dbHelper, BaseUserInfo userInfo) : this(dbHelper)
     91         {
     92             UserInfo = userInfo;
     93         }
     94 
     95         /// <summary>
     96         /// 构造函数
     97         /// </summary>
     98         /// <param name="dbHelper">数据库连接</param>
     99         /// <param name="userInfo">用户信息</param>
    100         /// <param name="tableName">指定表名</param>
    101         public BASEMODIFYRECORDManager(IDbHelper dbHelper, BaseUserInfo userInfo, string tableName) : this(dbHelper, userInfo)
    102         {
    103             base.CurrentTableName = tableName;
    104         }
    105 
    106         /// <summary>
    107         /// 添加, 这里可以人工干预,提高程序的性能
    108         /// </summary>
    109         /// <param name="entity">实体</param>
    110         /// <param name="identity">自增量方式,表主键是否采用自增的策略</param>
    111         /// <param name="returnId">返回主键,不返回程序允许速度会快,主要是为了主细表批量插入数据优化用的</param>
    112         /// <returns>主键</returns>
    113         public string Add(BASEMODIFYRECORDEntity entity, bool identity = true, bool returnId = true)
    114         {
    115             this.Identity = identity;
    116             this.ReturnId = returnId;
    117             entity.Id = int.Parse(this.AddObject(entity));
    118             return entity.Id.ToString();
    119         }
    120 
    121         /// <summary>
    122         /// 更新
    123         /// </summary>
    124         /// <param name="entity">实体</param>
    125         public int Update(BASEMODIFYRECORDEntity entity)
    126         {
    127             return this.UpdateObject(entity);
    128         }
    129 
    130         /// <summary>
    131         /// 获取实体
    132         /// </summary>
    133         /// <param name="id">主键</param>
    134         public BASEMODIFYRECORDEntity GetObject(string id)
    135         {
    136             return GetObject(int.Parse(id));
    137         }
    138 
    139         public BASEMODIFYRECORDEntity GetObject(int id)
    140         {
    141             return BaseEntity.Create<BASEMODIFYRECORDEntity>(this.GetDataTable(new KeyValuePair<string, object>(this.PrimaryKey, id)));
    142         }
    143 
    144         /// <summary>
    145         /// 添加实体
    146         /// </summary>
    147         /// <param name="entity">实体</param>
    148         public string AddObject(BASEMODIFYRECORDEntity entity)
    149         {
    150             string key = string.Empty;
    151             SQLBuilder sqlBuilder = new SQLBuilder(DbHelper, this.Identity, this.ReturnId);
    152             sqlBuilder.BeginInsert(this.CurrentTableName, this.PrimaryKey);
    153             if (!this.Identity) 
    154             {
    155                 // 这里已经是指定了主键了,所以不需要返回主键了
    156                 sqlBuilder.ReturnId = false;
    157                 sqlBuilder.SetValue(this.PrimaryKey, entity.Id);
    158             }
    159             else
    160             {
    161                 if (!this.ReturnId && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
    162                 {
    163                     if (DbHelper.CurrentDbType == CurrentDbType.Oracle)
    164                     {
    165                         sqlBuilder.SetFormula(this.PrimaryKey, "SEQ_" + this.CurrentTableName.ToUpper() + ".NEXTVAL ");
    166                     }
    167                     if (DbHelper.CurrentDbType == CurrentDbType.DB2)
    168                     {
    169                         sqlBuilder.SetFormula(this.PrimaryKey, "NEXT VALUE FOR SEQ_" + this.CurrentTableName.ToUpper());
    170                     }
    171                 }
    172                 else
    173                 {
    174                     if (this.Identity && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
    175                     {
    176                         BaseSequenceManager sequenceManager = new BaseSequenceManager(DbHelper);
    177                         entity.Id = int.Parse(sequenceManager.Increment(this.CurrentTableName));
    178                         sqlBuilder.SetValue(this.PrimaryKey, entity.Id);
    179                     }
    180                 }
    181             }
    182             this.SetObject(sqlBuilder, entity);
    183             if (UserInfo != null) 
    184             { 
    185                 sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldCreateUserId, UserInfo.Id);
    186                 sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldCreateBy, UserInfo.Realname);
    187             } 
    188             sqlBuilder.SetDBNow(BASEMODIFYRECORDEntity.FieldCreateOn);
    189             if (this.Identity && (DbHelper.CurrentDbType == CurrentDbType.SqlServer || DbHelper.CurrentDbType == CurrentDbType.Access))
    190             {
    191                 key = sqlBuilder.EndInsert().ToString();
    192             }
    193             else
    194             {
    195                 sqlBuilder.EndInsert();
    196             }
    197             if (this.Identity && (DbHelper.CurrentDbType == CurrentDbType.Oracle || DbHelper.CurrentDbType == CurrentDbType.DB2))
    198             {
    199                 return entity.Id.ToString();
    200             }
    201             return key;
    202         }
    203 
    204         /// <summary>
    205         /// 更新实体
    206         /// </summary>
    207         /// <param name="entity">实体</param>
    208         public int UpdateObject(BASEMODIFYRECORDEntity entity)
    209         {
    210             SQLBuilder sqlBuilder = new SQLBuilder(DbHelper);
    211             sqlBuilder.BeginUpdate(this.CurrentTableName);
    212             this.SetObject(sqlBuilder, entity);
    213             sqlBuilder.SetWhere(this.PrimaryKey, entity.Id);
    214             return sqlBuilder.EndUpdate();
    215         }
    216 
    217         // 这个是声明扩展方法
    218         partial void SetObjectExpand(SQLBuilder sqlBuilder, BASEMODIFYRECORDEntity entity);
    219         
    220         /// <summary>
    221         /// 设置实体
    222         /// </summary>
    223         /// <param name="entity">实体</param>
    224         private void SetObject(SQLBuilder sqlBuilder, BASEMODIFYRECORDEntity entity)
    225         {
    226             SetObjectExpand(sqlBuilder, entity);
    227             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldNEWKEY, entity.NEWKEY);
    228             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldNEWVALUE, entity.NEWVALUE);
    229             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldCOLUMNDESCRIPTION, entity.COLUMNDESCRIPTION);
    230             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldOLDKEY, entity.OLDKEY);
    231             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldOLDVALUE, entity.OLDVALUE);
    232             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldRECORDKEY, entity.RECORDKEY);
    233             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldCOLUMNCODE, entity.COLUMNCODE);
    234             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldTABLEDESCRIPTION, entity.TABLEDESCRIPTION);
    235             sqlBuilder.SetValue(BASEMODIFYRECORDEntity.FieldTABLECODE, entity.TABLECODE);
    236         }
    237 
    238         /// <summary>
    239         /// 删除实体
    240         /// </summary>
    241         /// <param name="id">主键</param>
    242         /// <returns>影响行数</returns>
    243         public int Delete(int id)
    244         {
    245             return this.Delete(new KeyValuePair<string, object>(this.PrimaryKey, id));
    246         }
    247     }
    248 }

    参照上面,在操作时调用对应方法,即可将记录变更的数据记录下来。这样数据出现问题就可以及时找到。

    用通用权限管理的代码系统生成器生成代码确实非常棒,与其权限功能配合很好用,我们只需考虑业务功能即可,大大节省了开发时间。

  • 相关阅读:
    pytorch dataloader num_workers堵塞、卡死解决方法(对我来说本质原因是OSError: [WinError 1455] 页面文件太小,无法完成操作)
    opencv
    深度学习 图片分类调参小结
    Pytorch错误:Torch not compiled with CUDA enabled
    关于Windows与NOI LINUX虚拟机复制粘贴的问题
    [复习]基础背包dp
    模拟 8
    [复习]基础线性dp
    [复习]分块/莫队
    [复习]线段树基础
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/4075111.html
Copyright © 2020-2023  润新知