Я использую . 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();
Это прекрасно работает. Проблема в том, что файл сначала загружается в оперативную память, а затем сохраняется в базу данных. Если несколько пользователей вызывают этот метод одновременно, серверу может не хватить оперативной памяти.
Как можно избежать чтения файла в оперативную память? Вместо этого я хочу сохранить его содержимое непосредственно в базе данных .