/// <summary> /// 解记录锁 /// </summary> /// <param name="tableName">数据表名称</param> /// <param name="keys">主键字符串</param> /// <param name="userID">用户ID</param> /// <returns></returns> public static ReturnValueInfo UnLockRecord(VPMSDBDataContext dbDataContext, string tableName, long recordID, string userID) { if (dbDataContext == null) { throw new Exception("dbDataContext is null !"); } ReturnValueInfo retrunInfo = null; Sys_RecordLockRegister_rlr recordInfo = null; try { recordInfo = dbDataContext.Sys_RecordLockRegister_rlrs.SingleOrDefault <Sys_RecordLockRegister_rlr>(t => t.rlr_cTableName == tableName && t.rlr_iByLockRecordID == recordID && t.rlr_cLockedBy == userID); retrunInfo = new ReturnValueInfo(); if (recordInfo != null) { dbDataContext.Sys_RecordLockRegister_rlrs.DeleteOnSubmit(recordInfo); dbDataContext.SubmitChanges(); } retrunInfo.boolValue = true; } catch (Exception Ex) { throw Ex; } return(retrunInfo); }
/// <summary> /// 检查记录是否为本用户所锁定 /// </summary> /// <param name="tableName">数据表名称</param> /// <param name="keys">主键字符串</param> /// <param name="userID">用户ID</param> /// <returns></returns> public static bool MyLockRecord(string tableName, long recordID, string userID) { Sys_RecordLockRegister_rlr recordInfo = null; bool isMyLock = false; try { using (VPMSDBDataContext dbDataContext = new VPMSDBDataContext()) { recordInfo = dbDataContext.Sys_RecordLockRegister_rlrs.SingleOrDefault <Sys_RecordLockRegister_rlr>(t => t.rlr_cTableName == tableName && t.rlr_iByLockRecordID == recordID && t.rlr_cLockedBy == userID); if (recordInfo != null) { isMyLock = true; } } } catch (Exception Ex) { throw Ex; } return(isMyLock); }
/// <summary> /// 锁定记录 /// </summary> /// <param name="tableName">数据表名称</param> /// <param name="keys">主键字符串</param> /// <param name="userID">用户ID</param> /// <returns></returns> public static ReturnValueInfo LockRecord(string tableName, long recordID, string userID) { ReturnValueInfo retrunInfo = null; Sys_RecordLockRegister_rlr recordInfo = null; try { using (VPMSDBDataContext dbDataContext = new VPMSDBDataContext()) { recordInfo = dbDataContext.Sys_RecordLockRegister_rlrs.SingleOrDefault <Sys_RecordLockRegister_rlr>(t => t.rlr_cTableName == tableName && t.rlr_iByLockRecordID == recordID); retrunInfo = new ReturnValueInfo(); if (recordInfo == null) { Sys_RecordLockRegister_rlr insertInfo = new Sys_RecordLockRegister_rlr(); insertInfo.rlr_cTableName = tableName; insertInfo.rlr_cKeys = ""; insertInfo.rlr_iByLockRecordID = recordID; insertInfo.rlr_dLockDateTime = DateTime.Now; insertInfo.rlr_cLockedBy = userID; dbDataContext.Sys_RecordLockRegister_rlrs.InsertOnSubmit(insertInfo); dbDataContext.SubmitChanges(); retrunInfo.boolValue = true; } else { if (recordInfo.rlr_cLockedBy.Trim() == userID.Trim()) { retrunInfo.boolValue = true; } else { TimeSpan ts = DateTime.Now.Subtract(recordInfo.rlr_dLockDateTime); if (ts.TotalHours >= Common.DefineConstantValue.LockRecordMaxTime) { dbDataContext.Sys_RecordLockRegister_rlrs.DeleteOnSubmit(recordInfo); Sys_RecordLockRegister_rlr insertInfo = new Sys_RecordLockRegister_rlr(); insertInfo.rlr_cTableName = tableName; insertInfo.rlr_cKeys = ""; insertInfo.rlr_iByLockRecordID = recordID; insertInfo.rlr_dLockDateTime = DateTime.Now; insertInfo.rlr_cLockedBy = userID; dbDataContext.Sys_RecordLockRegister_rlrs.InsertOnSubmit(insertInfo); dbDataContext.SubmitChanges(); retrunInfo.boolValue = true; } else { retrunInfo.boolValue = false; retrunInfo.messageText = "记录正被 " + recordInfo.rlr_cLockedBy + " 修改!"; } } } } } catch (Exception Ex) { throw Ex; } return(retrunInfo); }