我想知道是否有任何可能性来捕获类似“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?
答案 0 :(得分:1)
这个问题的答案可能会对你的问题有所了解: Cascading deletes with Entity Framework - Related entities deleted by EF
基本上,如果SQL服务器正在执行级联,EF没有一种机制来了解SQL服务器正在删除的内容(就像它不知道在另一个实例中删除了什么一样)连接到同一服务器的应用程序),如果实体没有被EF直接删除,它就不知道它被删除了。
我所知道的唯一真正的解决方法是自己执行级联,在这种情况下,您可以扩展记录删除功能以删除服务器上的任何物理文件。