Beispiel #1
0
        public override bool ReleaseApplicationLock()
        {
            return(WrappedConnection.ExecuteDbCommand("sp_releaseapplock", cmd =>
            {
                cmd.CommandType = CommandType.StoredProcedure;

                var outParam = cmd.CreateParameter();
                outParam.ParameterName = "@result";
                outParam.DbType = DbType.Int32;
                outParam.Direction = ParameterDirection.ReturnValue;
                cmd.Parameters.Add(outParam);

                var inParam1 = cmd.CreateParameter();
                inParam1.ParameterName = "@Resource";
                inParam1.Value = LOCK_ID;
                inParam1.DbType = DbType.String;
                inParam1.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(inParam1);

                var inParam2 = cmd.CreateParameter();
                inParam2.ParameterName = "@LockOwner";
                inParam2.Value = "Session";
                inParam2.DbType = DbType.String;
                inParam2.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(inParam2);
            }, cmd =>
            {
                cmd.ExecuteNonQuery();
                return (int)(cmd.Parameters["@result"] as IDbDataParameter).Value;
            }) >= 0);
        }