nHibernate谈了很长时间来保存二进制数据

时间:2011-10-12 15:57:13

标签: c# nhibernate filestream

我正在尝试使用filestream列类型和nHibernate将文件存储在SQL Server数据库中。

它似乎工作但它非常慢,我尝试将其更改为常规varbinary(max)列并且它没有效果。

使用本地数据库在本地站点上进行测试...保存~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();
    }
}

谢谢, Brian W。

1 个答案:

答案 0 :(得分:0)

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