我们使用以下代码保存当前项目:
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();
问题仍未解决。