Cascade的实体框架OnDelete事件

时间:2014-08-17 11:29:17

标签: c# entity-framework asp.net-mvc-4

我想知道是否有任何可能性来捕获类似“OnDelete事件”的内容,以便对每个实体进行级联删除。所有类都实现了级联,并且它可以完美地工作(删除课程会删除DB中的文件RECORDS)。我的结构是这样的:

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.
}

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

@derrick在此解决方案的评论中遇到同样的问题: Model OnDelete event?

1 个答案:

答案 0 :(得分:1)

这个问题的答案可能会对你的问题有所了解: Cascading deletes with Entity Framework - Related entities deleted by EF

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

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