示例#1
0
        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);
        }
示例#2
0
        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);
        }