【发布时间】:2025-12-02 05:55:01
【问题描述】:
我正在尝试将大约 600 MB 的 zip 文件上传到 SQL 2008 FILESTREAM 表,但我得到了 OutOfMemoryException。我正在使用 SqlFileStream 类来上传文件(如本教程中所述 - http://www.aghausman.net/dotnet/saving-and-retrieving-file-using-filestream-sql-server-2008.html)。如果这很重要,我有一台 32 位 Vista 机器和 4GB 内存,我正在使用 VS 2010,Entity Framework 4。
这是我的代码 sn-p -
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();
}
}
如何上传文件而不出现任何错误?
谢谢!
【问题讨论】:
标签: sql filestream