У меня есть хранилище 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? Можете ли вы предложить лучшие методы решения этой проблемы.