EF Core - сохранить файл в базу данных без предварительного чтения в ОЗУ - PullRequest
0 голосов
/ 16 апреля 2020

Я использую . NET Core 3.1 и PostgreSQL база данных. У меня есть следующая модель базы данных:

public partial class Attachment
{
    public int Id { get; set; }
    public byte[] Content { get; set; }
    ...
}

Кроме того, у меня есть файл большой (> 500 МБ), сохраненный на диске в TempFiles/file.data. Если я хочу сохранить вложение в базе данных, я могу сделать следующее:

Attachment attachment = new Attachment()
{
    Content = File.ReadAllBytes("TempFiles/file.data")
};

_dbContext.Attachment.Add(attachment);
_dbContext.SaveChanges();

Это прекрасно работает. Проблема в том, что файл сначала загружается в оперативную память, а затем сохраняется в базу данных. Если несколько пользователей вызывают этот метод одновременно, серверу может не хватить оперативной памяти.

Как можно избежать чтения файла в оперативную память? Вместо этого я хочу сохранить его содержимое непосредственно в базе данных .

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