我已经将模型设置为一对多,如下所示:
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);
删除与其连接的所有文章,但我需要删除位于文章内部路径的图像。
我可以轻松地手动迭代文章,但我想知道是否可以覆盖或扩展删除方法,以便我不必多次执行。
答案 0 :(得分:1)
通常,您需要创建分层体系结构,并在服务或存储库层处理这些问题。在不创建这些层的情况下执行此操作的最佳方法是覆盖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();
}