public Task <T> FirstOrDefaultAsync <T>(CancellationToken CancellationToken) { using (SqlCommand command = connection.GetCommand(commandText)) { DatabaseTrace.Append(command.CommandText, Constant.Query); if (connection.HasTransaction) { command.Transaction = connection.Transaction; } return(command.ExecuteReaderAsync(CommandBehavior.SingleRow, CancellationToken) .ContinueWith(task => { T callback = default; using (SqlDataReader reader = task.Result) { if (reader.HasRows) { callback = DatabaseReaderSelect <T> .FirstAsync(reader, CancellationToken); } reader.Close(); } return callback; })); } }
public Task <T> FirstAsync <T>(CancellationToken CancellationToken) { using (SqlCommand command = connection.GetCommand(commandText)) { DatabaseTrace.Append(command.CommandText, Constant.Query); if (connection.HasTransaction) { command.Transaction = connection.Transaction; } return(command.ExecuteReaderAsync(CommandBehavior.SingleRow, CancellationToken) .ContinueWith(task => { bool read = false; T callback = default; using (SqlDataReader reader = task.Result) { if (reader.HasRows) { read = true; } if (read) { callback = DatabaseReaderSelect <T> .FirstAsync(reader, CancellationToken); } reader.Close(); if (!read) { throw new EntityDatabaseException($"Database Select FirstAsync {typeof(T).Name} Failed, Nothing Returned With Query : \n\n {commandText}"); } return callback; } })); } }