删除实体时调用函数-删除文件
本文关键字:删除 文件 函数 调用 实体 | 更新日期: 2023-09-27 18:01:09
问题说明:
我已经设置了如下一对多的模型:
public class ArticleHeading
{
[Key]
public int ArticleHeadingID
public string ArticleHeadingName {get;set;}
public virtual ICollection<Article> Articles {get;set;}
}
public class Article
{
[Key]
public int ArticleID {get;set;}
[Required]
public string ArticleContent {get;set;}
[Required]
[ForeignKey("ArticleHeadingID")]
public virtual ArticleHeading Heading {get;set;}
[Required]
public int ArticleHeadingID {get;set;}
[Required]
public string ArticleImagePath {get;set;}
}
注意:一些数据成员被省略,因为它不相关
我想要实现的是,当我删除
ArticleHeading时,我也想删除具有以下路径的图像:
ArticleImagePath
所以下面的代码:
_context.ArticleHeadings.Remove(someArticleHeading);
成功删除所有连接到它的文章,但我需要删除位于文章内部路径的图像。
我可以很容易地手动迭代文章,但我想知道是否有可能重写或扩展remove方法,这样我就不必多次这样做了。
通常您希望创建一个分层体系结构,并在服务或存储库层处理这些问题。在不制作这些层的情况下,最好的方法是覆盖Context类中的SaveChanges方法。下面这样的事情应该会让你朝着正确的方向前进。
public override int SaveChanges()
{
var deletedArticleHeadings = ChangeTracker.Entries<ArticleHeading>().Where(x => x.State == EntityState.Deleted).ToList();
foreach (var headingEntry in deletedArticleHeadings)
{
var heading = headingEntry.Entity;
// Delete things.
}
return base.SaveChanges();
}