public async Task <TcpClientEndpoint> QueryById(Guid id) { TcpClientEndpoint endpoint = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _sockerConnectionFactory.CreateReadForSocket(), 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 TcpClientEndpoint where [id]=@id", StoreHelper.GetTcpClientEndpointSelectFields(string.Empty)) }) { var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier) { Value = id }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); SqlDataReader reader = null; await using (reader = await commond.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { endpoint = new TcpClientEndpoint(); StoreHelper.SetTcpClientEndpointSelectFields(endpoint, reader, string.Empty); } await reader.CloseAsync(); } } }); return(endpoint); }
public async Task <TcpListener> QueryById(Guid id) { TcpListener listener = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _sockerConnectionFactory.CreateReadForSocket(), 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 TcpListener where [id]=@id", StoreHelper.GetTcpListenerSelectFields(string.Empty)) }) { var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier) { Value = id }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); int reply = 3; SqlDataReader reader = null; while (true) { if (reader != null && !reader.IsClosed) { try { await reader.CloseAsync(); } catch { } } try { reader = await commond.ExecuteReaderAsync(); break; } catch (SqlException ex) { if (reply > 0 && (ex.Number == 41302 || ex.Number == 41305 || ex.Number == 41325 || ex.Number == 41301 || ex.Number == 1205)) { reply--; System.Threading.Thread.Sleep(1); } else { throw; } } } await using (reader) { if (await reader.ReadAsync()) { listener = new TcpListener(); StoreHelper.SetTcpListenerSelectFields(listener, reader, string.Empty); } await reader.CloseAsync(); } } }); return(listener); }