用于级联的实体框架OnDelete事件

本文关键字:OnDelete 事件 框架 实体 级联 用于 | 更新日期: 2023-09-27 18:18:15

我想知道是否有可能捕获像"OnDelete事件"这样的东西,用于级联删除每个实体。所有的类都实现了级联,它完美地工作(删除课程将删除数据库中的文件记录)。我的结构是这样的:

publi class Course
{
    ...
    public virtual ICollection<Lesson> Lessons {get; set;}
    public Course()
    {
        Lessons = new List<Lesson>();
    }
}
public class Lesson
{
    ...
    public virtual ICollection<Section> Section {get; set;}
    public Lesson()
    {
        Section = new List<Section>();
    }
}
public class Section
{
    ...
    public virtual File File {get; set;}
}
public class File
{
    ...
    public Uri Uri {get; set;}
    // I Would like to catch every delete of file to remove it from server.
}

现在,当我从我的课程中删除任何课程时,我希望与该课程(通过Section相关)相关的所有文件(服务器上的物理文件)都被删除。

@derrick在这个解决方案的评论中也有同样的问题:Model OnDelete事件?

用于级联的实体框架OnDelete事件

这个问题的答案可能会对你的问题有所启发:使用实体框架级联删除- EF删除相关实体

基本上,如果SQL服务器正在执行级联,EF没有机制知道SQL服务器删除了什么(就像它不会知道连接到同一服务器的应用程序的另一个实例中删除了什么一样),如果实体没有被EF直接删除,它不可能知道它被删除了。

我所知道的唯一真正的解决方法是自己执行级联,在这种情况下,您可以扩展记录删除功能,以删除服务器上的任何物理文件。