2011-10-12 78 views
0

我试图使用filestream列类型和nHibernate将文件存储在SQL服务器数据库中。nHibernate长时间保存二进制数据

它似乎工作,但它非常缓慢,我试图改变这只是一个常规varbinary(最大)列,它没有任何效果。

使用本地数据库在本地站点上进行测试...保存〜100k文件大约需要5-10秒,保存〜5mb文件需要20-30分钟。

看看SQL分析器,它似乎是采取nHibernate长推出插入语句,而不是数据库的问题。

当试图提交时,它在iis上激活了大约80mb的内存,但处理器根本没有被击中,它只是坐在那里。

有没有人经历过这个或有任何见解之前,我调试到nHibernate源?

这里是我的配置...

public class ProgramDocument : IDocumentFile 
{ 
    public virtual int ProgramDocumentId { get; set; } 
    public virtual Program Program { get; set; } 
    public virtual byte[] DocumentData { get; set; } 
    public virtual ProgramDocumentationType DocumentType { get; set; } 
    public virtual string MimeType { get; set; } 
    public virtual string FileExtension { get; set; } 
    public virtual ProgramPresenter ProgramPresenter { get; set; } 
    public virtual DateTime CreateDate { get; set; } 
} 

public class ProgramDocumentOverride : IAutoMappingOverride<ProgramDocument> 
{ 
    public void Override(AutoMapping<ProgramDocument> mapping) 
    { 
     mapping.Map(_ => _.DocumentData).Length(int.MaxValue).LazyLoad(); 
    } 
} 

感谢, 布莱恩·W·

+0

您正在使用哪种NHibernate版本? – cremor

回答

0

我怀疑问题是由于这样的事实:NH尝试检查二进制领域有变化,这需要比保存更长的时间。我记得过去有这样一个问题,我不记得解决方法,或者如果它解决了。尝试检查jira:https://nhibernate.jira.com/secure/Dashboard.jspa