NHibernate将图像文件保存在数据库中,并由用户删除

时间:2017-01-26 11:41:28

标签: c# database nhibernate persistence

我们使用以下代码保存当前项目:

this.session.SaveOrUpdate(this.project);
this.tx.Commit();
this.tx.Dispose();
this.tx = this.session.BeginTransaction();

在我们的程序中,用户可以向项目添加任意数量的图像文件。使用上面的代码,这些图像文件存储在项目文件中。

问题在于,如果用户从项目中删除图像,则项目的文件大小不会更改。我们怀疑图像数据未被删除。我们该怎么办?

编辑:我看过日志,实际上似乎是从数据库中删除了图像:

11:04:35.615 [10] DEBUG NHibernate.SQL - DELETE FROM "MachineImage" WHERE Id = @p0;@p0 = 6 [Type: Int32 (0)]

但为什么文件不会变小呢?

编辑:我现在认为我知道问题所在,但我需要帮助解决问题。

我有这堂课:

public class MachineImageMap : ModelBaseMap<MachineImage>
{
    public MachineImageMap()
    {
        this.Map(x => x.OrderIndex);
        this.References(x => x.Image);
    }
}

x.Image的数据类型为ImageResource,并且有一个名为ImageResourceMap的类:

public class ImageResourceMap : ModelBaseMap<ImageResource>
{
    public ImageResourceMap()
    {
        this.Map(x => x.Description);
        this.Map(x => x.ImageData);
        this.Map(x => x.Name);
        this.Map(x => x.Height);        // 2016.04.05
    }
}

问题是我的程序从MachineImage表中删除了图像,但是没有从ImageResource表中删除它。我该如何解决这个问题?

编辑:我配置了级联,但文件大小保持不变。

this.References(x => x.Image).Cascade.Delete();

问题仍未解决。

0 个答案:

没有答案