Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在数据库中以blob的形式存储和检索文档?_Sql Server_Asp.net Mvc 3_Model View Controller_Blob - Fatal编程技术网

Sql server 如何在数据库中以blob的形式存储和检索文档?

Sql server 如何在数据库中以blob的形式存储和检索文档?,sql-server,asp.net-mvc-3,model-view-controller,blob,Sql Server,Asp.net Mvc 3,Model View Controller,Blob,在我基于MVC 3/SQL Server的应用程序中,我希望将pdf文档作为blob存储在数据库中。在我的模型中,我具有以下属性: public byte[] PdfData { get; set; } 读取文件并从文件流中获取字节相当简单,但在尝试保存更改时,我会遇到错误 字节数组截断为4000长度 这当然有道理,因为文档大于默认的4000字节限制。但是我不允许将maxlength属性设置为8000以上,这太小了。我知道我可以通过使用如下图像数据类型来解决这个问题: [Column(Type

在我基于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数据库。不确定这是否相关。

请参见,您可以简单地使用它来存储PDF而不是图像。也适用于基于文件流的实现。其要点是,您不仅要存储和检索大blob,还要绝对避免与
byte[]
之间的转换,因为这意味着整个文档必须首先在ASP进程的活动内存中复制,即使在中等负载下,它也会杀死服务器。上面的示例显示了如何使用流接口进行上传和下载。

是的,我尝试了[Column(TypeName=“varbinary(max)”]只是为了得到错误:类型varbinary(max)未使用命名空间或别名限定。只有基元类型可以在没有限定的情况下使用谢谢,Remus,这在我的情况下可能有些过分,但以后可能会有用。