Esempio n. 1
0
        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;
                }));
            }
        }
Esempio n. 2
0
        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;
                    }
                }));
            }
        }