型号OnDelete事件? [英] Model OnDelete event?

查看:161
本文介绍了型号OnDelete事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的模型,看起来像这样:

I've got a simple model that looks like this:

public class ImageFile
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public ImageMeta Meta { get; set; }
    public string FileName { get; set; }
    public DateTime DateUploaded { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
}

有什么办法,我可以添加某种OnDelete事件挂钩,以便每当一个模型是通过 db.Images.Remove(镜像文件)删除; 或什么其他的手段,我可​​以删除相关的文件?

Is there any way I can add some kind of "OnDelete" event hook so that whenever a model is deleted via db.Images.Remove(imageFile); or whatever other means, I can delete the associated file?

推荐答案

您可以覆盖上下文的的SaveChanges 方法挂钩到删除的实体。

You can override the SaveChanges method of your context to hook up to delete entities.

public class GalleryContext : DbContext
{
     public override int SaveChanges()
     {
          var deletedImages = ChangeTracker.Entries()
              .Where(e => e.State == EntityState.Deleted && e.Entity is ImageFile)
              .Select(e => e.Entity).Cast<ImageFile>();

          foreach(var image in deletedImages)
          {
              // delete file here or call a method on image
          }

          return base.SaveChanges();
     }
}

这篇关于型号OnDelete事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆