Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }