如何使用NHibernate上传大文件?

时间:2012-09-25 10:41:17

标签: c# asp.net .net nhibernate

问题陈述:

我有一个支持文件上传的aspx网页(即附件)。 附件的大小可达500 MB。 我能够获得HttpPostedFile但是当读取流到Byte []并将其保存到数据库时,对于更大尺寸的文件会失败。 在NHibernateSession.Flush()中,抛出Out of Memory异常。

注意:我可以上传最多45MB的数据。

如何解决此问题?

2 个答案:

答案 0 :(得分:3)

您不应该使用byte[],因为这意味着您必须将整个文件加载到内存中。这是一个nice article,它说明了如何使用BLOBS和Streams来缓解这些问题。可以找到文章类型中说明的自定义Blob数据的实现here

答案 1 :(得分:2)

如果您的数据库是MS SQL,那么您应该使用SqlFileStream。这是一个很好的example如何做到这一点。