0

在我的基于 MVC 3 / SQL Server 的应用程序中,我想将 pdf 文档作为 blob 存储在数据库中。在我的模型中,我有这个属性:

public byte[] PdfData { get; set; }

读取文件并从文件流中获取字节非常简单,但是在尝试保存更改时出现错误

字节数组截断长度为 4000

这当然是有道理的,因为文档大于默认的 4000 字节限制。但是我不允许将 maxlength 属性设置为超过 8000,这太小了。我知道我可以通过使用这样的图像数据类型来解决这个问题:

[Column(TypeName = "image")]
public byte[] PdfData { get; set; }

但据我了解,图像数据类型只是为了向后兼容,并且可能随时消失。我想做的是使用varbinary(max)数据类型。但是如何设置我的模型以在 SQL Server 中生成此数据类型的列?

附带说明一下,我目前在我的开发环境中在 SQL Server CE 上运行,但该应用程序在部署时将针对常规 SQL Server 2008 数据库。不确定这是否相关。

4

1 回答 1

1

请参阅通过 ASP.Net MVC 从 SQL Server 下载和上传图像,您可以简单地使用它来存储 PDF 而不是图像。还有FILESTREAM MVC:从 SQL Server 下载和上传图像,用于基于文件流的实现。它的要点是,您不仅要存储和检索大 blob,还要绝对避免相互转换,byte[]因为这意味着必须首先在 ASP 进程中将整个文档复制到实时内存中,这会杀死服务器即使是中等负载。上面的例子展示了如何使用流接口进行上传和下载。

于 2012-06-06T08:58:33.417 回答