Возврат потока BLOB без чтения в памяти - PullRequest
0 голосов
/ 06 августа 2020

У меня есть хранилище BLOB-объектов

class Blob{
    public Guid Id { get; set; }
    public byte[] Content { get; set; }
}

Я хочу вернуть поток Content. Сейчас я читаю данные целиком и возвращаю MemoryStream.

Текущий код

public async Task<Stream> GetOrNullAsync(BlobProviderGetArgs args)
{
    var blob = await DatabaseBlobRepository.FindAsync(id);

    if (blob == null)
    {
        return null;
    }

    return new MemoryStream(blob.Content);
}

Как видите, сначала я читаю все данные, а затем возвращаю MemoryStream.

Это не проблема для маленьких объектов, но учтите, что существует Blob размером 1 ГБ, это будет проблемой.

Есть ли способ улучшить его, например, return Stream через EfCore? Можете ли вы предложить лучшие методы решения этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...