【问题标题】:Linq to Entities and SQL Server 2008 FileStreamLinq to Entities 和 SQL Server 2008 FileStream
【发布时间】:2009-11-05 16:38:14
【问题描述】:

后端:启用 FileStream 的 SQL Server 2008 数据库

数据访问: Linq to Entities

我有数以千计的 pdf 当前驻留在文件服务器上。我想将这些 pdf 从文件服务器中移出并放入 SQL Server 2008 数据库中,以便更轻松地管理它们。

作为概念证明(即——确保 SQL Server 2008 中的新 FileStream 功能是我所寻找的),我编写了一个小应用程序,它可以通过实体框架。

应用程序非常简单;这是代码:

datReport report = new datReport();
report.ReportName = "ANL-7411-Rev-Supp-1.pdf";
report.RowGuid = Guid.NewGuid();

// The following line blows up on really big pdf's (350+ mb's)
report.ReportData = File.ReadAllBytes(@"C:\TestSavePDF\ANL-7411-Rev-Supp-1.pdf");

using (NewNNAFTAEntities ctx = new NewNNAFTAEntities()) {
   ctx.AddTodatReport(report);
   ctx.SaveChanges();
}

我在上面注释了发生错误的代码行。确切的错误是“System.outofmemoryexception”,这让我毫不怀疑文件大小是导致问题的原因。上面的代码确实适用于较小的 pdf。我不知道文件大小的确切限制在哪里,但我最大的 pdf 文件超过 350 兆字节,并且出现错误。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: asp.net linq-to-entities filestream out-of-memory


    【解决方案1】:

    在您的示例中,您并没有在 FILESTREAM 中大量使用 streaming....

    查看MSDN docs on FILESTREAM in ADO.NETthis article,它们都展示了如何使用 SqlFileStream 作为来自 C# 的流 - 这应该比将整个 PDF 吸入内存更好(我相信)......

    马克

    【讨论】:

    • 谢谢!实际上,我会在 MSDN 上找到相当多的文章,但我一定错过了有关 SqlFileStream 的部分。
    猜你喜欢
    • 2010-12-01
    • 2011-04-17
    • 2010-11-26
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多