Example #1
0
        public async Task Add(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
                })
                {
                    if (group.ID == Guid.Empty)
                    {
                        commond.CommandText = @"insert into SQueueProcessGroup([id],[name],[createtime],[modifytime])
                                    values(default,@name,getutcdate(),getutcdate());
                                    select @newid=[id] from SQueueProcessGroup where [sequence]=SCOPE_IDENTITY()";
                    }
                    else
                    {
                        commond.CommandText = @"insert into SQueueProcessGroup([id],[name],[createtime],[modifytime])
                                    values(@id,@name,getutcdate(),getutcdate())";
                    }

                    SqlParameter parameter;

                    if (group.ID != Guid.Empty)
                    {
                        parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                        {
                            Value = group.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 = group.Name
                    };
                    commond.Parameters.Add(parameter);

                    await commond.PrepareAsync();


                    await commond.ExecuteNonQueryAsync();

                    if (group.ID == Guid.Empty)
                    {
                        group.ID = (Guid)commond.Parameters["@newid"].Value;
                    }
                }
            });
        }
        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;
                    }
                }
            });
        }
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="endpoint"></param>
        /// <returns></returns>
        public async Task Add(ClientSMessageTypeListenerEndpoint endpoint)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _messageQueueConnectionFactory.CreateAllForMessageQueueMain(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (sqlTran != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }
                await using (SqlCommand command = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran
                })
                {
                    SqlParameter parameter;
                    if (endpoint.ID == Guid.Empty)
                    {
                        command.CommandText = @"INSERT INTO [dbo].[ClientSMessageTypeListenerEndpoint]
                                                       ([id]
                                                       ,[name]
                                                       ,[signaturekey]
                                                       ,[createtime]
                                                       ,[modifytime])
                                                 VALUES
                                                       (DEFAULT
                                                       ,@name
                                                       ,@signaturekey
                                                       ,GETUTCDATE()
                                                       ,GETUTCDATE());
                                                SELECT @newid = id FROM [dbo].[ClientSMessageTypeListenerEndpoint] WHERE [sequence] = SCOPE_IDENTITY();";

                        parameter = new SqlParameter("@newid", SqlDbType.UniqueIdentifier)
                        {
                            Direction = ParameterDirection.Output
                        };
                        command.Parameters.Add(parameter);
                    }
                    else
                    {
                        command.CommandText = @"INSERT INTO [dbo].[ClientSMessageTypeListenerEndpoint]
                                                       ([id]
                                                       ,[name]
                                                       ,[signaturekey]
                                                       ,[createtime]
                                                       ,[modifytime])
                                                 VALUES
                                                       (@id
                                                       ,@name
                                                       ,@signaturekey
                                                       ,GETUTCDATE()
                                                       ,GETUTCDATE());";
                        parameter           = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                        {
                            Value = endpoint.ID
                        };
                        command.Parameters.Add(parameter);
                    }
                    parameter = new SqlParameter("@name", SqlDbType.NVarChar, 500)
                    {
                        Value = endpoint.Name
                    };
                    command.Parameters.Add(parameter);
                    parameter = new SqlParameter("@signaturekey", SqlDbType.NVarChar, 150)
                    {
                        Value = endpoint.SignatureKey
                    };
                    command.Parameters.Add(parameter);
                    await command.PrepareAsync();

                    try
                    {
                        await command.ExecuteNonQueryAsync();
                    }
                    catch (SqlException ex)
                    {
                        if (ex == null)
                        {
                            throw;
                        }
                        if (ex.Number == 2601)
                        {
                            var fragment = new TextFragment()
                            {
                                Code = TextCodes.ExistClientSMessageTypeListenerEndpointByName,
                                DefaultFormatting = "客户端消息类型监听终结点中存在相同的名称\"{0}\"数据",
                                ReplaceParameters = new List <object>()
                                {
                                    endpoint.Name
                                }
                            };

                            throw new UtilityException((int)Errors.ExistClientSMessageTypeListenerEndpointByName, fragment);
                        }
                        else
                        {
                            throw;
                        }
                    }
                    if (endpoint.ID == Guid.Empty)
                    {
                        endpoint.ID = (Guid)command.Parameters["@newid"].Value;
                    }
                    ;
                }
            });
        }