Этот вопрос будет следовать до Efficient way to transfer many binary files into SQL Server databaseКак избежать LOH при чтении двоичного
Первоначально я спросил, почему использование File.ReadAllBytes
вызывало быстрое использование памяти и был сделан вывод, используя этот метод размещения данных на больших объектов куче, которая не могут быть легко восстановлены во время выполнения.
Мой вопрос сейчас в том, как избежать этой ситуации?
using (var fs = new FileStream(path, FileMode.Open))
{
using (var ms = new MemoryStream())
{
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, bytesRead);
}
return new CustomFile { FileValue = ms.ToArray() };
}
}
Следующий код был предназначен, чтобы обойти эту проблему, читая файл на куски, а не все сразу, но это, кажется, та же самая проблема.
Мы используем Nhibernate с SQL 2008 R2, я не уверен, что поток может быть сохранен непосредственно. – user1838662