Я разобрался в проблеме. Вот мой код -
аюсь загрузить ZIP-файл размером около 600 МБ в таблицу SQL 2008 FILESTREAM и получаю исключение OutOfMemoryException. Я использую класс SqlFileStream для загрузки файла (как описано в этом руководстве -http://www.aghausman.net/dotnet/saving-and-retrieving-file-using-filestream-sql-server-2008.html). У меня есть 32-разрядная машина Vista с 4 ГБ оперативной памяти, если это имеет значение, и я использую VS 2010, Entity Framework 4.
Вот мой фрагмент кода -
public static void AddItem(RepositoryFile repository)
{
var contents = repository.Data; // I get the exception at this line.
repository.Data = System.Text.Encoding.ASCII.GetBytes("0x00");
using (var scope = new TransactionScope())
{
using (var db = new MyEntities())
{
db.RepositoryTable.AddObject(repository);
db.SaveChanges();
}
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
using (var cmd = new SqlCommand("SELECT Data.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() FROM dbo.RepositoryTable", con))
{
cmd.Connection.Open();
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var path = reader.GetString(0);
var transactionContext = reader.GetSqlBytes(1).Buffer;
var fileStream = new SqlFileStream(path, transactionContext, FileAccess.Write);
fileStream.Write(contents, 0, contents.Length);
fileStream.Close();
}
}
}
scope.Complete();
}
}
Как загрузить файл без ошибок?
Спасибо!