nHibernate说话很长时间保存二进制数据

本文关键字:保存 二进制 数据 长时间 nHibernate | 更新日期: 2023-09-27 18:10:59

我正在尝试使用fileststream列类型和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 .

nHibernate说话很长时间保存二进制数据

我怀疑这个问题是由于NH试图检查二进制字段是否有变化,这比仅仅保存需要更长的时间。我记得过去有过这样的问题,但我不记得是如何解决的,或者是否已经解决了。试着检查jira: https://nhibernate.jira.com/secure/Dashboard.jspa