在程序操作中,我们需要把记录变更操作记录下来,通用权限管理系统正好有这个表,下面参照这个表创建自己的修改记录表,表结构如下
用代码生成器的截图如下
实体类
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 }
参照上面,在操作时调用对应方法,即可将记录变更的数据记录下来。这样数据出现问题就可以及时找到。
用通用权限管理的代码系统生成器生成代码确实非常棒,与其权限功能配合很好用,我们只需考虑业务功能即可,大大节省了开发时间。
时间: 2024-10-25 14:57:21