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; } ; } }); }