Entity framework 模型删除事件?

Entity framework 模型删除事件?,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,我有一个简单的模型,看起来像这样: public class ImageFile { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public ImageMeta Meta { get; set; } public string FileName { get; set; } public DateTime DateUp

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

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(imageFile)删除模型
或任何其他方式,我可以删除关联的文件?

您可以覆盖上下文的
SaveChanges
方法来连接删除实体

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();
     }
}
公共类GalleryContext:DbContext
{
公共覆盖int SaveChanges()
{
var deletedImages=ChangeTracker.Entries()
.Where(e=>e.State==EntityState.Deleted&&e.Entity为ImageFile)
.Select(e=>e.Entity).Cast();
foreach(deletedImages中的var图像)
{
//在此处删除文件或调用图像上的方法
}
返回base.SaveChanges();
}
}

您是否也希望检测级联删除?这就是我的问题。@Derrick:是的,那会有帮助的。我已经有一段时间没有接触过这个项目了,但理想情况下会有一个钩子在删除时始终运行,这样它就不会失去同步。如果稍后回滚事务时删除失败,我们该怎么办?