.net 如何使用NHibernate和SQL Server 2005保存PDF文件

.net 如何使用NHibernate和SQL Server 2005保存PDF文件,.net,sql-server,nhibernate,pdf,.net,Sql Server,Nhibernate,Pdf,我正在开发一个网络应用程序,用户有机会上传pdf格式的简历。我使用NHibernate作为数据映射器和MS SQL SERVER 2005 我希望能够将.pdf文件保存到给定的表中。。。有什么想法吗 多谢各位 插入表格(DocumentId,PDF) 值(newid(),0x12345667) 其中,十六进制常量是PDF的十六进制编码字节流 我相信有人能找到更好的方法,但这对我来说是显而易见的。你有什么理由需要将PDF放入表格中?您可以将文件保存到文件系统并使用ID引用它。这将为您节省一些SQL

我正在开发一个网络应用程序,用户有机会上传pdf格式的简历。我使用NHibernate作为数据映射器和MS SQL SERVER 2005

我希望能够将.pdf文件保存到给定的表中。。。有什么想法吗

多谢各位

插入表格(DocumentId,PDF) 值(newid(),0x12345667)

其中,十六进制常量是PDF的十六进制编码字节流


我相信有人能找到更好的方法,但这对我来说是显而易见的。

你有什么理由需要将PDF放入表格中?您可以将文件保存到文件系统并使用ID引用它。这将为您节省一些SQL Server空间。我不相信你能以任何方式索引二进制数据。

我们正是通过“原始”Java Hibernate3来实现这一点的。您只需将持久类的字节数组属性映射到类型为“image”的列

休眠映射:

<hibernate-mapping>
    <class name="com.hibernate.pdf.sample.TPDFDocument" table="T_PDFDocument">
        <id name="pdfDocumentId" type="integer">
            <column name="pdfDocumentId" />
            <generator class="identity" />
        </id>
        <property name="document" type="binary">
            <column name="document" not-null="true" />
        </property>
    </class>
</hibernate-mapping>
您所要做的就是将文档原始字节读入数组并将其持久化。在我们的情况下,文档的大小几乎不会超过1MB,因此将整个内容放入字节数组不会导致性能问题。也许这个解决方案不适用于非常大的文档

我想通过NHibernate实现和C#解决方案会非常相似

<hibernate-mapping>
    <class name="com.hibernate.pdf.sample.TPDFDocument" table="T_PDFDocument">
        <id name="pdfDocumentId" type="integer">
            <column name="pdfDocumentId" />
            <generator class="identity" />
        </id>
        <property name="document" type="binary">
            <column name="document" not-null="true" />
        </property>
    </class>
</hibernate-mapping>
CREATE TABLE [dbo].[T_PDFDocument](
    [pdfDocumentId] [int] IDENTITY(1,1) NOT NULL,
    [document] [image] NOT NULL,
CONSTRAINT [PK_PDFDocument] PRIMARY KEY CLUSTERED 
(
    [pdfDocumentId] ASC
)