Exemplo n.º 1
0
        /// <summary>
        /// 根据ID查询
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <ClientSystemLoginEndpoint> QueryById(Guid id)
        {
            ClientSystemLoginEndpoint result = null;
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _dbConnectionFactory.CreateReadForSystemToken(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand command = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    CommandText = string.Format(@"SELECT {0} FROM [dbo].[ClientSystemLoginEndpoint] WHERE id=@id;", StoreHelper.GetClientSystemLoginEndpointSelectFields(string.Empty)),
                    Transaction = sqlTran
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = id
                    };
                    command.Parameters.Add(parameter);
                    await command.PrepareAsync();
                    SqlDataReader reader = null;

                    await using (reader = await command.ExecuteReaderAsync())
                    {
                        if (await reader.ReadAsync())
                        {
                            result = new ClientSystemLoginEndpoint();
                            StoreHelper.SetClientSystemLoginEndpointSelectFields(result, reader, string.Empty);
                        }
                        await reader.CloseAsync();
                    }
                }
            });

            return(result);
        }
Exemplo n.º 2
0
        public async Task Delete(Guid optionSetValueId, Guid itemId)
        {
            //获取读写连接字符串
            var strConn = _entityMetadataConnectionFactory.CreateAllForEntityMetadata();
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, strConn, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = "delete from OptionSetValueItem where [optionsetvalueid]=@optionsetvalueid and [id]=@id"
                })
                {
                    SqlParameter parameter;

                    parameter = new SqlParameter("@optionsetvalueid", SqlDbType.UniqueIdentifier)
                    {
                        Value = optionSetValueId
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = itemId
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 3
0
        public async Task Update(OptionSetValueMetadata metadata)
        {
            //获取读写连接字符串
            var strConn = _entityMetadataConnectionFactory.CreateAllForEntityMetadata();

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, strConn, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"update OptionSetValueMetadata set [name]=@name,[modifytime]=getutcdate()
                                    where [id]=@id"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = metadata.ID
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@name", SqlDbType.NVarChar, 100)
                    {
                        Value = metadata.Name
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 4
0
        public async Task DeletePrivilegeRelation(Guid roleId, Guid privilegeId)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _privilegeManagementConnectionFactory.CreateAllForPrivilegeManagement(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"delete from RolePrivilegeRelation([roleid],[privilegeid])
                                   value(@roleid,@privilegeid)"
                })
                {
                    SqlParameter parameter;

                    parameter = new SqlParameter("@roleid", SqlDbType.UniqueIdentifier)
                    {
                        Value = roleId
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@privilegeid", SqlDbType.UniqueIdentifier)
                    {
                        Value = privilegeId
                    };
                    commond.Parameters.Add(parameter);

                    commond.Prepare();


                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 5
0
        /// <summary>
        /// 删除与系统登陆终结点的关联关系
        /// </summary>
        /// <param name="authorizationId"></param>
        /// <param name="systemLoginEndpointId"></param>
        /// <returns></returns>
        public async Task DeleteSystemLoginEndpointRelation(Guid authorizationId, Guid systemLoginEndpointId)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionFactory.CreateAllForSystemToken(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }
                await using (SqlCommand command = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                })
                {
                    SqlParameter parameter;

                    command.CommandText = @"delete [dbo].[SystemLoginEndpointAuthorizationEndpointRelation]
                                            where [systemloginendpointid] = @systemloginendpointid
                                              and [authorizationendpointid] = @authorizationendpointid";
                    parameter           = new SqlParameter("@systemloginendpointid", SqlDbType.UniqueIdentifier)
                    {
                        Value = systemLoginEndpointId
                    };
                    command.Parameters.Add(parameter);

                    parameter = new SqlParameter("@authorizationendpointid", SqlDbType.UniqueIdentifier)
                    {
                        Value = authorizationId
                    };
                    command.Parameters.Add(parameter);

                    await command.PrepareAsync();

                    await command.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 6
0
        public async Task DeleteGroupRelation(Guid actionId, Guid groupId)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _businessSecurityRuleConnectionFactory.CreateAllForBusinessSecurityRule(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"delete from BusinessActionGroupRelation WITH (SNAPSHOT) where [groupid]=@groupid and [actionid]=@actionid"
                })
                {
                    SqlParameter parameter;

                    parameter = new SqlParameter("@groupid", SqlDbType.UniqueIdentifier)
                    {
                        Value = groupId
                    };
                    commond.Parameters.Add(parameter);


                    parameter = new SqlParameter("@actionid", SqlDbType.UniqueIdentifier)
                    {
                        Value = actionId
                    };
                    commond.Parameters.Add(parameter);

                    commond.Prepare();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 7
0
        public async Task AddRetry(SQueue queue, Guid id, string exceptionMessage)
        {
            //根据存储类型和服务器名称获取连接字符串
            var strConn = _messageQueueConnectionFactory.CreateAllForMessageQueue(queue.StoreType, queue.ServerName);
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, strConn, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = string.Format(@"update {0} set [retrynumber]=case when [retrynumber]>=10000 then 10000 else [retrynumber]+1 end,[exceptionmessage]=@exceptionmessage where [id]=@id", queue.Name)
                })
                {
                    SqlParameter parameter;

                    parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = id
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@exceptionmessage", SqlDbType.NVarChar, exceptionMessage.Length)
                    {
                        Value = exceptionMessage
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();
                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 8
0
        public async Task UpdateContent(SystemConfiguration configuration)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionMainFactory.CreateAllForSystemConfiguration(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"update systemconfiguration set [content]=@content,[modifytime]=getutcdate()
                                    where [id]=@id"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = configuration.ID
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@content", SqlDbType.NVarChar, 1000)
                    {
                        Value = configuration.Content
                    };
                    commond.Parameters.Add(parameter);


                    await commond.PrepareAsync();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 9
0
        public async Task Update(PrivilegeSystem system)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _privilegeManagementConnectionFactory.CreateAllForPrivilegeManagement(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"update PrivilegeSystem set [name]=@name,[modifytime]=getutcdate()
                                    where [id]=@id"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = system.ID
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@name", SqlDbType.NVarChar, 150)
                    {
                        Value = system.Name
                    };
                    commond.Parameters.Add(parameter);


                    commond.Prepare();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 10
0
        public async Task DeleteByRelation(Guid groupId, Guid id)
        {
            //获取读写连接字符串
            var strConn = _hashConnectionFactory.CreateAllForHash();

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, strConn, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }
                using (SqlCommand command = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    CommandText = @"
                                   delete HashRealNode      
                                   where n.id = @id and groupid = @groupId"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = id
                    };
                    command.Parameters.Add(parameter);

                    parameter = new SqlParameter("@groupid", SqlDbType.UniqueIdentifier)
                    {
                        Value = groupId
                    };
                    command.Parameters.Add(parameter);

                    command.Prepare();
                    await command.ExecuteNonQueryAsync();
                }
            });
        }
        public async Task Delete(Guid systemOperationId, Guid whitelistId)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionFactory.CreateAllForWhitelistPolicy(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"delete from systemoperationwhiteListrelation
                                    where systemoperationid=@systemoperationid and whitelistid=@whitelistid"
                })
                {
                    var parameter = new SqlParameter("@systemoperationid", SqlDbType.UniqueIdentifier)
                    {
                        Value = systemOperationId
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@whitelistid", SqlDbType.UniqueIdentifier)
                    {
                        Value = whitelistId
                    };
                    commond.Parameters.Add(parameter);

                    commond.Prepare();


                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 12
0
        public async Task Update(BusinessActionGroup group)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _businessSecurityRuleConnectionFactory.CreateReadForBusinessSecurityRule(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"update BusinessActionGroup WITH (SNAPSHOT) set [name]=@name,[modifytime]=getutcdate()
                                    where [id]=@id"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = group.ID
                    };
                    commond.Parameters.Add(parameter);


                    parameter = new SqlParameter("@name", SqlDbType.NVarChar, 150)
                    {
                        Value = group.Name
                    };
                    commond.Parameters.Add(parameter);

                    commond.Prepare();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 13
0
        public async Task DeleteByTypeRelation(Guid typeId, Guid listenerId)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _messageQueueConnectionFactory.CreateAllForMessageQueueMain(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"delete from SMessageTypeListener where [id]=@id and [messagetypeid]=@messagetypeid"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = listenerId
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@typeid", SqlDbType.UniqueIdentifier)
                    {
                        Value = typeId
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();


                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 14
0
        public async Task Update(SQueueProcessGroup group)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _messageQueueConnectionFactory.CreateAllForMessageQueueMain(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"update SQueueProcessGroup set [name]=@name,[modifytime]=getutcdate()
                                    where [id]=@id"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = group.ID
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@name", SqlDbType.VarChar, 150)
                    {
                        Value = group.Name
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 15
0
        public async Task Delete(Guid id)
        {
            //获取读写连接字符串
            var strConn = _hashConnectionFactory.CreateAllForHash();
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, strConn, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @" delete from 
                                    [dbo].[HashGroup]		  
		                            where [id]=@id"
                })
                {
                    SqlParameter parameter;

                    parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = id
                    };
                    commond.Parameters.Add(parameter);

                    commond.Prepare();


                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 16
0
        public async Task DeleteBySourceID(string sourceInfo, Guid infoID)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionFactory.CreateAllForStorge(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }
                await using (SqlCommand command = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                })
                {
                    SqlParameter parameter;

                    command.CommandText = @"delete from MultipartStorgeInfo where [id]=@id and [sourceinfo]=@sourceinfo";
                    parameter           = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = infoID
                    };
                    command.Parameters.Add(parameter);

                    parameter = new SqlParameter("@sourceinfo", SqlDbType.NVarChar, 500)
                    {
                        Value = sourceInfo
                    };
                    command.Parameters.Add(parameter);

                    await command.PrepareAsync();
                    await command.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 17
0
        /// <summary>
        /// 增加动作与组的关联关系
        /// </summary>
        /// <param name="actionId"></param>
        /// <param name="queueId"></param>
        /// <returns></returns>
        public async Task AddActionGroupRelation(Guid actionId, Guid queueId)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionFactory.CreateAllForSchedule(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }
                using (SqlCommand command = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"UPDATE [dbo].[ScheduleAction]
                                       SET [groupid]=@groupid,[modifytime] = GETUTCDATE()
                                     WHERE id=@id AND [groupid] IS NULL"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = actionId
                    };
                    command.Parameters.Add(parameter);
                    parameter = new SqlParameter("@groupid", SqlDbType.UniqueIdentifier)
                    {
                        Value = queueId
                    };
                    command.Parameters.Add(parameter);
                    command.Prepare();


                    await command.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 18
0
        public async Task DeleteProcessGroupRelation(Guid processGroupId, Guid queueId)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _messageQueueConnectionFactory.CreateAllForMessageQueueMain(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"update SQueue set processgroupid=null where [id]=@id and processgroupid=@processgroupid"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = queueId
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@processgroupid", SqlDbType.UniqueIdentifier)
                    {
                        Value = processGroupId
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 19
0
        public async Task Add(SerialNumberRecord record)
        {
            record.Value = 1;

            var storeInfo = await StoreInfoHelper.GetHashStoreInfo(_storeInfoResolveService, _hashGroupRepository, _hashGroupName, record.Prefix);

            if (!storeInfo.TableNames.TryGetValue(HashEntityNames.SerialNumber, out string tableName))
            {
                var fragment = new TextFragment()
                {
                    Code = TextCodes.NotFoundKeyInHashNodeKeyInfo,
                    DefaultFormatting = "哈希组{0}中的哈希节点关键信息中找不到键值{1}",
                    ReplaceParameters = new List <object>()
                    {
                        _hashGroupName, HashEntityNames.SerialNumber
                    }
                };

                throw new UtilityException((int)Errors.NotFoundKeyInHashNodeKeyInfo, fragment);
            }

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, storeInfo.DBConnectionNames.ReadAndWrite, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran
                })
                {
                    if (record.ID == Guid.Empty)
                    {
                        commond.CommandText = string.Format(@"insert into {0}([id],[prefix],[value],[createtime],[modifytime])
                                    values(default,@prefix,1,getutcdate(),getutcdate());
                                    select @newid=[id] from {0} where [sequence]=SCOPE_IDENTITY()", tableName);
                    }
                    else
                    {
                        commond.CommandText = string.Format(@"insert into {0}([id],[prefix],[value],[createtime],[modifytime])
                                    values(@id,@prefix,1,getutcdate(),getutcdate())", tableName);
                    }


                    SqlParameter parameter;
                    if (record.ID != Guid.Empty)
                    {
                        parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                        {
                            Value = record.ID
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@newid", SqlDbType.UniqueIdentifier)
                        {
                            Direction = ParameterDirection.Output
                        };
                        commond.Parameters.Add(parameter);
                    }


                    parameter = new SqlParameter("@prefix", SqlDbType.NVarChar, 1000)
                    {
                        Value = record.Prefix
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();



                    try
                    {
                        await commond.ExecuteNonQueryAsync();
                    }
                    catch (SqlException ex)
                    {
                        if (ex.Number == 2601)
                        {
                            var fragment = new TextFragment()
                            {
                                Code = TextCodes.ExistFoundSerialNumberRecordByPrefix,
                                DefaultFormatting = "前缀为{0}的序列号记录已经存在",
                                ReplaceParameters = new List <object>()
                                {
                                    record.Prefix
                                }
                            };

                            throw new UtilityException((int)Errors.ExistFoundSerialNumberRecordByPrefix, fragment);
                        }
                        else
                        {
                            throw;
                        }
                    }


                    if (record.ID == Guid.Empty)
                    {
                        record.ID = (Guid)commond.Parameters["@newid"].Value;
                    }
                }
            });
        }
Exemplo n.º 20
0
        public async Task Lock(DBConnectionNames connNames, string lockName, int timeout)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionFactory.CreateAllForApplicationLock(connNames, lockName),
                                                              async (conn, transaction) =>
            {
                string strTimeout;
                if (timeout == -1)
                {
                    strTimeout = "null";
                }
                else
                {
                    strTimeout = timeout.ToString();
                }
                string strSql = string.Format(@"declare @result int,@resource nvarchar(300),@timeout int,@message nvarchar(300)
                                      set @result = 0;
		                              set @resource='{0}';
                                      set @timeout={1}
                                      begin
			                            if @@TRANCOUNT>0
		                                    begin
			                                    if @timeout is null
				                                    EXEC @result = sp_getapplock @Resource = @resource, 
					                                @LockMode = 'Exclusive'
			                                    else
					                                EXEC @result = sp_getapplock @Resource = @resource, 
					                                @LockMode = 'Exclusive',@LockTimeout=@timeout			
		                                    end
                                        else
		                                    begin
			                                    if @timeout is null
				                                    EXEC @result = sp_getapplock @Resource = @resource, 
					                                @LockMode = 'Exclusive',@LockOwner='Session'
			                                    else
					                                EXEC @result = sp_getapplock @Resource = @resource, 
					                                @LockMode = 'Exclusive',@LockOwner='Session',@LockTimeout=@timeout			
		                                    end	

                                        if @result<0
		                                    begin
			                                    set @message=N'applock加锁失败,失败码:'+convert(nvarchar(20),@result)+',详细信息:'+ERROR_MESSAGE();
			                                    throw 50001,@message,1
		                                    end
                                       end
                            
                        ", lockName, strTimeout);

                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand command = new SqlCommand())
                {
                    command.CommandTimeout = 300;
                    command.Connection     = (SqlConnection)conn;
                    command.CommandType    = CommandType.Text;
                    command.CommandText    = strSql;
                    command.Transaction    = sqlTran;
                    await command.PrepareAsync();
                    try
                    {
                        await command.ExecuteNonQueryAsync();
                    }
                    catch (SqlException ex)
                    {
                        if (ex.Number == 50001)
                        {
                            var fragment = new TextFragment()
                            {
                                Code = TextCodes.ExistLicationLock,
                                DefaultFormatting = "当前请求{0}已被锁定",
                                ReplaceParameters = new List <object>()
                                {
                                    lockName
                                }
                            };

                            throw new UtilityException((int)Errors.ExistLicationLock, fragment);
                        }
                        else
                        {
                            throw;
                        }
                    }
                }
            }
                                                              );
        }
Exemplo n.º 21
0
        public async Task <SerialNumberRecord> QueryByPrefix(string prefix)
        {
            SerialNumberRecord record = null;

            var storeInfo = await StoreInfoHelper.GetHashStoreInfo(_storeInfoResolveService, _hashGroupRepository, _hashGroupName, prefix);

            if (!storeInfo.TableNames.TryGetValue(HashEntityNames.SerialNumber, out string tableName))
            {
                var fragment = new TextFragment()
                {
                    Code = TextCodes.NotFoundKeyInHashNodeKeyInfo,
                    DefaultFormatting = "哈希组{0}中的哈希节点关键信息中找不到键值{1}",
                    ReplaceParameters = new List <object>()
                    {
                        _hashGroupName, HashEntityNames.SerialNumber
                    }
                };

                throw new UtilityException((int)Errors.NotFoundKeyInHashNodeKeyInfo, fragment);
            }

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, storeInfo.DBConnectionNames.Read, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = string.Format(@"select {0} from {1} where [prefix]=@prefix", StoreHelper.GetSerialNumberRecordSelectFields(string.Empty), tableName)
                })
                {
                    var parameter = new SqlParameter("@prefix", SqlDbType.NVarChar, 1000)
                    {
                        Value = prefix
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();

                    SqlDataReader reader = null;

                    await using (reader = await commond.ExecuteReaderAsync())
                    {
                        if (await reader.ReadAsync())
                        {
                            record = new SerialNumberRecord();
                            StoreHelper.SetSerialNumberRecordSelectFields(record, reader, string.Empty);
                        }

                        await reader.CloseAsync();
                    }
                }
            });

            return(record);
        }
Exemplo n.º 22
0
        public async Task UpdateByTypeRelation(SMessageTypeListener listener)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _messageQueueConnectionFactory.CreateAllForMessageQueueMain(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"update SMessageTypeListener set [name]=@name,[mode]=@mode,[listenerfactorytype]=@listenerfactorytype,[listenerfactorytypeusedi]=@listenerfactorytypeusedi,[listenerweburl]=@listenerweburl,[listenerwebsignature]=@listenerwebsignature where [id]=@id and messagetypeid=@messagetypeid"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = listener.ID
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@messagetypeid", SqlDbType.UniqueIdentifier)
                    {
                        Value = listener.MessageType.ID
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@name", SqlDbType.VarChar, 150)
                    {
                        Value = listener.Name
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@mode", SqlDbType.Int)
                    {
                        Value = listener.Mode
                    };
                    commond.Parameters.Add(parameter);

                    if (listener.ListenerFactoryType != null)
                    {
                        parameter = new SqlParameter("@listenerfactorytype", SqlDbType.VarChar, 150)
                        {
                            Value = listener.ListenerFactoryType
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@listenerfactorytype", SqlDbType.VarChar, 150)
                        {
                            Value = DBNull.Value
                        };
                        commond.Parameters.Add(parameter);
                    }

                    if (listener.ListenerFactoryTypeUseDI != null)
                    {
                        parameter = new SqlParameter("@listenerfactorytypeusedi", SqlDbType.Bit)
                        {
                            Value = listener.ListenerFactoryTypeUseDI
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@listenerfactorytypeusedi", SqlDbType.Bit)
                        {
                            Value = DBNull.Value
                        };
                        commond.Parameters.Add(parameter);
                    }

                    if (listener.ListenerWebUrl != null)
                    {
                        parameter = new SqlParameter("@listenerweburl", SqlDbType.VarChar, 200)
                        {
                            Value = listener.ListenerWebUrl
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@listenerweburl", SqlDbType.VarChar, 200)
                        {
                            Value = DBNull.Value
                        };
                        commond.Parameters.Add(parameter);
                    }


                    if (listener.ListenerWebSignature != null)
                    {
                        parameter = new SqlParameter("@listenerwebsignature", SqlDbType.VarChar, 150)
                        {
                            Value = listener.ListenerWebSignature
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@listenerwebsignature", SqlDbType.VarChar, 150)
                        {
                            Value = DBNull.Value
                        };
                        commond.Parameters.Add(parameter);
                    }

                    await commond.PrepareAsync();

                    await commond.ExecuteNonQueryAsync();
                }
            });
        }
Exemplo n.º 23
0
        public async Task UnLock(DBConnectionNames connNames, string lockName)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionFactory.CreateAllForApplicationLock(connNames, lockName),
                                                              async (conn, transaction) =>
            {
                string strSql = string.Format(@"declare @result int,@resource nvarchar(300),@message nvarchar(300)
                                      set @result = 0;
		                              set @resource='{0}';
                                      begin

		                                begin try
			                                EXEC @result = sp_releaseapplock @Resource = @resource
		                                end try
		                                begin catch
		                                end catch

                                        if @result<0
		                                    begin
			                                    set @message=N'applock解锁失败,失败码:'+convert(nvarchar(20),@result)+N',详细信息:'+ERROR_MESSAGE();
			                                    throw 50001,@message,1
		                                    end
                                       end
                            
                        ", lockName);

                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand command = new SqlCommand())
                {
                    command.CommandTimeout = 300;
                    command.Connection     = (SqlConnection)conn;
                    command.CommandType    = CommandType.Text;
                    command.CommandText    = strSql;
                    command.Transaction    = sqlTran;
                    await command.PrepareAsync();
                    try
                    {
                        await command.ExecuteNonQueryAsync();
                    }
                    catch (SqlException ex)
                    {
                        if (ex.Number == 50001)
                        {
                            var fragment = new TextFragment()
                            {
                                Code = TextCodes.ExistLicationLock,
                                DefaultFormatting = "当前请求{0}已被锁定",
                                ReplaceParameters = new List <object>()
                                {
                                    lockName
                                }
                            };

                            throw new UtilityException((int)Errors.ExistLicationLock, fragment);
                        }
                        else
                        {
                            throw;
                        }
                    }
                }
            }
                                                              );
        }
Exemplo n.º 24
0
        public async Task QueryByType(Guid typeId, Func <SMessageTypeListener, Task> callback)
        {
            List <SMessageTypeListener> listenerList = new List <SMessageTypeListener>();

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) =>
            {
                Int64?sequence = null;
                int pageSize   = 500;

                while (true)
                {
                    listenerList.Clear();

                    SqlTransaction sqlTran = null;
                    if (transaction != null)
                    {
                        sqlTran = (SqlTransaction)transaction;
                    }

                    await using (SqlCommand commond = new SqlCommand()
                    {
                        Connection = (SqlConnection)conn,
                        CommandType = CommandType.Text,
                        Transaction = sqlTran
                    })
                    {
                        if (!sequence.HasValue)
                        {
                            commond.CommandText = string.Format(@"select top (@pagesize) {0},{1} from SMessageTypeListener as listener join SMessageExecuteType as mtype on listener.messagetypeid=mtype.id where mtype.id=@typeid order by listener.[sequence]", StoreHelper.GetSMessageTypeListenerSelectFields("listener"), StoreHelper.GetSMessageExecuteTypeSelectFields("mtype"));
                        }
                        else
                        {
                            commond.CommandText = string.Format(@"select top (@pagesize) {0},{1} from SMessageTypeListener as listener join SMessageExecuteType as mtype on listener.messagetypeid=mtype.id where mtype.id=@typeid and listener.[sequence]>@sequence order by listener.[sequence]", StoreHelper.GetSMessageTypeListenerSelectFields("listener"), StoreHelper.GetSMessageExecuteTypeSelectFields("mtype"));
                        }

                        var parameter = new SqlParameter("@typeid", SqlDbType.UniqueIdentifier)
                        {
                            Value = typeId
                        };
                        commond.Parameters.Add(parameter);

                        parameter = new SqlParameter("@pagesize", SqlDbType.Int)
                        {
                            Value = pageSize
                        };
                        commond.Parameters.Add(parameter);

                        if (sequence.HasValue)
                        {
                            parameter = new SqlParameter("@sequence", SqlDbType.BigInt)
                            {
                                Value = sequence
                            };
                            commond.Parameters.Add(parameter);
                        }

                        await commond.PrepareAsync();

                        SqlDataReader reader = null;

                        await using (reader = await commond.ExecuteReaderAsync())
                        {
                            while (await reader.ReadAsync())
                            {
                                var listener = new SMessageTypeListener();
                                StoreHelper.SetSMessageTypeListenerSelectFields(listener, reader, "listener");
                                sequence             = (Int64)reader["listenersequence"];
                                listener.MessageType = new SMessageExecuteType();
                                StoreHelper.SetSMessageExecuteTypeSelectFields(listener.MessageType, reader, "mtype");
                                listenerList.Add(listener);
                            }

                            await reader.CloseAsync();
                        }
                    }

                    foreach (var listenerItem in listenerList)
                    {
                        await callback(listenerItem);
                    }

                    if (listenerList.Count != pageSize)
                    {
                        break;
                    }
                }
            });
        }
Exemplo n.º 25
0
        public async Task <QueryResult <SMessageTypeListener> > QueryByType(Guid typeId, int page, int pageSize)
        {
            QueryResult <SMessageTypeListener> result = new QueryResult <SMessageTypeListener>();

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = string.Format(@"set @currentpage=@page
		                           select @count= count(*) from SMessageTypeListener where messagetypeid=@typeid
		                           if @pagesize*@page>=@count
			                          begin
				                           set @currentpage= @count/@pagesize
				                           if @count%@pagesize<>0
					                           begin
						                            set @currentpage=@currentpage+1
					                           end
				                           if @currentpage=0
					                           set @currentpage=1
			                          end
		                            else if @page<1 
			                           begin 
				                           set @currentpage=1
			                           end
	
                                    select {0},{1} from SMessageTypeListener as listener join SMessageExecuteType as mtype where listener.messagetypeid=@typeid
                                    order by listener.[sequence]
		                            offset (@pagesize * (@currentpage - 1)) rows 
		                            fetch next @pagesize rows only;"        , StoreHelper.GetSMessageTypeListenerSelectFields("listener"), StoreHelper.GetSMessageExecuteTypeSelectFields("mtype"))
                })
                {
                    var parameter = new SqlParameter("@page", SqlDbType.Int)
                    {
                        Value = page
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@pagesize", SqlDbType.Int)
                    {
                        Value = pageSize
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@typeid", SqlDbType.UniqueIdentifier)
                    {
                        Value = typeId
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@count", SqlDbType.Int)
                    {
                        Direction = ParameterDirection.Output
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@currentpage", SqlDbType.Int)
                    {
                        Direction = ParameterDirection.Output
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();

                    SqlDataReader reader = null;

                    await using (reader = await commond.ExecuteReaderAsync())
                    {
                        while (await reader.ReadAsync())
                        {
                            var listener = new SMessageTypeListener();
                            StoreHelper.SetSMessageTypeListenerSelectFields(listener, reader, "listener");
                            listener.MessageType = new SMessageExecuteType();
                            StoreHelper.SetSMessageExecuteTypeSelectFields(listener.MessageType, reader, "mtype");
                            result.Results.Add(listener);
                        }

                        await reader.CloseAsync();

                        result.TotalCount  = (int)commond.Parameters["@count"].Value;
                        result.CurrentPage = (int)commond.Parameters["@currentpage"].Value;
                    }
                }
            });

            return(result);
        }
Exemplo n.º 26
0
        public async Task Add(SMessageTypeListener listener)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _messageQueueConnectionFactory.CreateAllForMessageQueueMain(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran
                })
                {
                    if (listener.ID == Guid.Empty)
                    {
                        commond.CommandText = @"insert into SMessageTypeListener([id],[messagetypeid],[name],[queuegroupname],[mode],[listenerfactorytype],[listenerfactorytypeusedi],[listenerweburl],[listenerwebsignature],[createtime],[modifytime])
                                    values(default,@messagetypeid,@name,@queuegroupname,@mode,@listenerfactorytype,@listenerfactorytypeusedi,@listenerweburl,@listenerwebsignature,getutcdate(),getutcdate());
                                    select @newid=[id] from SMessageTypeListener where [sequence]=SCOPE_IDENTITY()";
                    }
                    else
                    {
                        commond.CommandText = @"insert into SMessageTypeListener([id],[messagetypeid],[name],[queuegroupname],[mode],[listenerfactorytype],[listenerfactorytypeusedi],[listenerweburl],[listenerwebsignature],[createtime],[modifytime])
                                    values(@id,@messagetypeid,@name,@queuegroupname,@mode,@listenerfactorytype,@listenerfactorytypeusedi,@listenerweburl,@listenerwebsignature,getutcdate(),getutcdate())";
                    }

                    SqlParameter parameter;
                    if (listener.ID != Guid.Empty)
                    {
                        parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                        {
                            Value = listener.ID
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@newid", SqlDbType.UniqueIdentifier)
                        {
                            Direction = ParameterDirection.Output
                        };
                        commond.Parameters.Add(parameter);
                    }

                    parameter = new SqlParameter("@messagetypeid", SqlDbType.UniqueIdentifier)
                    {
                        Value = listener.MessageType.ID
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@name", SqlDbType.VarChar, 150)
                    {
                        Value = listener.Name
                    };
                    commond.Parameters.Add(parameter);

                    if (listener.QueueGroupName != null)
                    {
                        parameter = new SqlParameter("@queuegroupname", SqlDbType.VarChar, 150)
                        {
                            Value = listener.Name
                        };
                    }
                    else
                    {
                        parameter = new SqlParameter("@queuegroupname", SqlDbType.VarChar, 150)
                        {
                            Value = DBNull.Value
                        };
                    }
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@mode", SqlDbType.Int)
                    {
                        Value = listener.Mode
                    };
                    commond.Parameters.Add(parameter);

                    if (listener.ListenerFactoryType != null)
                    {
                        parameter = new SqlParameter("@listenerfactorytype", SqlDbType.VarChar, 150)
                        {
                            Value = listener.ListenerFactoryType
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@listenerfactorytype", SqlDbType.VarChar, 150)
                        {
                            Value = DBNull.Value
                        };
                        commond.Parameters.Add(parameter);
                    }

                    if (listener.ListenerFactoryTypeUseDI != null)
                    {
                        parameter = new SqlParameter("@listenerfactorytypeusedi", SqlDbType.Bit)
                        {
                            Value = listener.ListenerFactoryTypeUseDI
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@listenerfactorytypeusedi", SqlDbType.Bit)
                        {
                            Value = DBNull.Value
                        };
                        commond.Parameters.Add(parameter);
                    }

                    if (listener.ListenerWebUrl != null)
                    {
                        parameter = new SqlParameter("@listenerweburl", SqlDbType.VarChar, 200)
                        {
                            Value = listener.ListenerWebUrl
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@listenerweburl", SqlDbType.VarChar, 200)
                        {
                            Value = DBNull.Value
                        };
                        commond.Parameters.Add(parameter);
                    }


                    if (listener.ListenerWebSignature != null)
                    {
                        parameter = new SqlParameter("@listenerwebsignature", SqlDbType.VarChar, 150)
                        {
                            Value = listener.ListenerWebSignature
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@listenerwebsignature", SqlDbType.VarChar, 150)
                        {
                            Value = DBNull.Value
                        };
                        commond.Parameters.Add(parameter);
                    }

                    await commond.PrepareAsync();

                    await commond.ExecuteNonQueryAsync();

                    if (listener.ID == Guid.Empty)
                    {
                        listener.ID = (Guid)commond.Parameters["@newid"].Value;
                    }
                }
            });
        }
Exemplo n.º 27
0
        public async Task QueryByRole(Guid roleId, Func <Privilege, Task> callback)
        {
            List <Privilege> queueList = new List <Privilege>();

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _privilegeManagementConnectionFactory.CreateReadForPrivilegeManagement(), async (conn, transaction) =>
            {
                Int64?sequence = null;
                int pageSize   = 500;

                while (true)
                {
                    queueList.Clear();

                    SqlTransaction sqlTran = null;
                    if (transaction != null)
                    {
                        sqlTran = (SqlTransaction)transaction;
                    }


                    using (SqlCommand commond = new SqlCommand()
                    {
                        Connection = (SqlConnection)conn,
                        CommandType = CommandType.Text,
                        Transaction = sqlTran
                    })
                    {
                        if (!sequence.HasValue)
                        {
                            commond.CommandText = string.Format(@"select top (@pagesize) {0} from [Privilege] as p join [dbo].[RolePrivilegeRelation] as rpr
                                                                  on p.id=rpr.privilegeid
                                                                  where rpr.roleid=@roleid order by p.[sequence]", StoreHelper.GetPrivilegeSelectFields("p"));
                        }
                        else
                        {
                            commond.CommandText = string.Format(@"select top (@pagesize) {0} from [Privilege] as p join [dbo].[RolePrivilegeRelation] as rpr
                                                                  on p.id=rpr.privilegeid
                                                                  where rpr.roleid=@roleid and p.[sequence]>@sequence order by p.[sequence]", StoreHelper.GetPrivilegeSelectFields("p"));
                        }

                        var parameter = new SqlParameter("@roleid", SqlDbType.UniqueIdentifier)
                        {
                            Value = roleId
                        };
                        commond.Parameters.Add(parameter);

                        parameter = new SqlParameter("@pagesize", SqlDbType.Int)
                        {
                            Value = pageSize
                        };
                        commond.Parameters.Add(parameter);

                        if (sequence.HasValue)
                        {
                            parameter = new SqlParameter("@sequence", SqlDbType.BigInt)
                            {
                                Value = sequence
                            };
                            commond.Parameters.Add(parameter);
                        }

                        commond.Prepare();


                        SqlDataReader reader = null;

                        using (reader = await commond.ExecuteReaderAsync())
                        {
                            while (await reader.ReadAsync())
                            {
                                var privilege = new Privilege();
                                StoreHelper.SetPrivilegeSelectFields(privilege, reader, "p");
                                sequence = (Int64)reader["psequence"];
                                queueList.Add(privilege);
                            }

                            reader.Close();
                        }
                    }

                    foreach (var queueItem in queueList)
                    {
                        await callback(queueItem);
                    }

                    if (queueList.Count != pageSize)
                    {
                        break;
                    }
                }
            });
        }
Exemplo n.º 28
0
        /// <summary>
        /// 根据实体元数据ID查询该实体元数据关联的全部记录
        /// </summary>
        /// <param name="infoId"></param>
        /// <param name="callback"></param>
        /// <returns></returns>
        public async Task QueryAllByEntityInfoId(Guid infoId, Func <EntityInfoKeyRelation, Task> callback)
        {
            List <EntityInfoKeyRelation> itemList = new List <EntityInfoKeyRelation>();

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _entityMetadataConnectionFactory.CreateReadForEntityMetadata(), async (conn, transaction) =>
            {
                int?sequence = null;
                int pageSize = 500;

                while (true)
                {
                    itemList.Clear();

                    SqlTransaction sqlTran = null;
                    if (transaction != null)
                    {
                        sqlTran = (SqlTransaction)transaction;
                    }

                    await using (SqlCommand commond = new SqlCommand()
                    {
                        Connection = (SqlConnection)conn,
                        CommandType = CommandType.Text,
                        Transaction = sqlTran
                    })
                    {
                        if (!sequence.HasValue)
                        {
                            commond.CommandText = string.Format(@"SELECT TOP (@pagesize) {0},{1},{2}
                                                                    FROM [EntityInfoKeyRelation] AS keyrelation INNER JOIN [EntityInfo] AS info ON keyrelation.[entityinfoid] = info.[id]
                                                                        INNER JOIN [EntityAttributeInfo] AS attribute ON keyrelation.[entityattributeinfoid] = attribute.[id]
                                                                    WHERE info.[id] = @id ORDER BY keyrelation.[order];",
                                                                StoreHelper.GetEntityInfoKeyRelationSelectFields("keyrelation"),
                                                                StoreHelper.GetEntityInfoSelectFields("info"),
                                                                StoreHelper.GetEntityAttributeInfoSelectFields("attribute"));
                        }
                        else
                        {
                            commond.CommandText = string.Format(@"SELECT TOP (@pagesize) {0},{1},{2}
                                                                    FROM [EntityInfoKeyRelation] AS keyrelation INNER JOIN [EntityInfo] AS info ON keyrelation.[entityinfoid] = info.[id]
                                                                        INNER JOIN [EntityAttributeInfo] AS attribute ON keyrelation.[entityattributeinfoid] = attribute.[id]
                                                                    WHERE info.[id] = @id AND keyrelation.[order] > @sequence ORDER BY keyrelation.[order];",
                                                                StoreHelper.GetEntityInfoKeyRelationSelectFields("keyrelation"),
                                                                StoreHelper.GetEntityInfoSelectFields("info"),
                                                                StoreHelper.GetEntityAttributeInfoSelectFields("attribute"));
                        }
                        var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                        {
                            Value = infoId
                        };
                        commond.Parameters.Add(parameter);

                        parameter = new SqlParameter("@pagesize", SqlDbType.Int)
                        {
                            Value = pageSize
                        };
                        commond.Parameters.Add(parameter);

                        if (sequence.HasValue)
                        {
                            parameter = new SqlParameter("@sequence", SqlDbType.BigInt)
                            {
                                Value = sequence
                            };
                            commond.Parameters.Add(parameter);
                        }

                        await commond.PrepareAsync();
                        SqlDataReader reader = null;


                        await using (reader = await commond.ExecuteReaderAsync())
                        {
                            while (await reader.ReadAsync())
                            {
                                var item = new EntityInfoKeyRelation();
                                StoreHelper.SetEntityInfoKeyRelationSelectFields(item, reader, "keyrelation");
                                sequence        = (int)reader["keyrelationorder"];
                                item.EntityInfo = new EntityInfo();
                                StoreHelper.SetEntityInfoSelectFields(item.EntityInfo, reader, "info");
                                item.EntityAttributeInfo = new EntityAttributeInfo();
                                StoreHelper.SetEntityAttributeInfoSelectFields(item.EntityAttributeInfo, reader, "attribute");
                                itemList.Add(item);
                            }
                            await reader.CloseAsync();
                        }
                    }

                    foreach (var item in itemList)
                    {
                        await callback(item);
                    }

                    if (itemList.Count != pageSize)
                    {
                        break;
                    }
                }
            });
        }
Exemplo n.º 29
0
        public async Task Add(HttpClaimGenerator generator)
        {
            //获取读写连接字符串
            var strConn = _contextConnectionFactory.CreateAllForContext();
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, strConn, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran
                })
                {
                    if (generator.ID == Guid.Empty)
                    {
                        commond.CommandText = @"insert into httpclaimgenerator([id],[name],[type],[createtime],[modifytime])
                                    values(default,@name,@tyep,getutcdate(),getutcdate());
                                    select @newid=[id] from httpclaimgenerator where [sequence]=SCOPE_IDENTITY()";
                    }
                    else
                    {
                        commond.CommandText = @"insert into httpclaimgenerator([id],[name],[type],[createtime],[modifytime])
                                    values(@id,@name,@type,getutcdate(),getutcdate())";
                    }

                    SqlParameter parameter;
                    if (generator.ID != Guid.Empty)
                    {
                        parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                        {
                            Value = generator.ID
                        };
                        commond.Parameters.Add(parameter);
                    }
                    else
                    {
                        parameter = new SqlParameter("@newid", SqlDbType.UniqueIdentifier)
                        {
                            Direction = ParameterDirection.Output
                        };
                        commond.Parameters.Add(parameter);
                    }


                    parameter = new SqlParameter("@name", SqlDbType.VarChar, 150)
                    {
                        Value = generator.Name
                    };
                    commond.Parameters.Add(parameter);


                    parameter = new SqlParameter("@type", SqlDbType.VarChar, 150)
                    {
                        Value = generator.Type
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();

                    await commond.ExecuteNonQueryAsync();

                    if (generator.ID == Guid.Empty)
                    {
                        generator.ID = (Guid)commond.Parameters["@newid"].Value;
                    }
                }
            });
        }
Exemplo n.º 30
0
        public async Task <QueryResult <HttpClaimGenerator> > QueryByPage(string name, int page, int pageSize)
        {
            QueryResult <HttpClaimGenerator> result = new QueryResult <HttpClaimGenerator>();

            //获取只读连接字符串
            var strConn = _contextConnectionFactory.CreateReadForContext();

            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, strConn, async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                await using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = string.Format(@"
		                           select @count= count(*) from HttpClaimGenerator where [name] like @name

                                    select {0} from HttpClaimGenerator where [name] like @name
                                    order by sequence
		                            offset (@pagesize * (@page - 1)) rows 
		                            fetch next @pagesize rows only;"        , StoreHelper.GetHttpClaimGeneratorSelectFields(string.Empty))
                })
                {
                    var parameter = new SqlParameter("@name", SqlDbType.VarChar, 150)
                    {
                        Value = $"{name.ToSqlLike()}%"
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@page", SqlDbType.Int)
                    {
                        Value = page
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@pagesize", SqlDbType.Int)
                    {
                        Value = pageSize
                    };

                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@count", SqlDbType.Int)
                    {
                        Direction = ParameterDirection.Output
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();

                    SqlDataReader reader = null;


                    await using (reader = await commond.ExecuteReaderAsync())
                    {
                        while (await reader.ReadAsync())
                        {
                            var generator = new HttpClaimGenerator();
                            StoreHelper.SetHttpClaimGeneratorSelectFields(generator, reader, string.Empty);
                            result.Results.Add(generator);
                        }

                        await reader.CloseAsync();

                        result.TotalCount  = (int)commond.Parameters["@count"].Value;
                        result.CurrentPage = page;
                    }
                }
            });

            return(result);
        }