我们假设我有两节课:
public class Photo
{
public int Id {get;set;}
public string Name {get;set;}
public int AlbumId {get;set;
publiv virtual Album Album {get;set;}
}
public class Album
{
public int Id {get;set;}
public decimal Price {get;set;}
public ICollection<Photo> Photos {get;set;}
}
现在我想删除所有价格的相册,例如2.我试过:
Context.RemoveRange(Context.Albums.Where(x = > x.Price == 2))
没关系,但在删除相册之前,我需要删除我要删除的AlbumId的每张照片。
答案 0 :(得分:1)
在Context中使用Fluent API来应用Cascade删除
modelBuilder.Entity<Photo>()
.HasRequired(c => c.Album)
.WithMany(a => a.Photoes)
.WillCascadeOnDelete(true);
答案 1 :(得分:1)
EF不执行级联删除。它依赖于数据库定义是正确的,然后假定数据库将执行级联删除(如果指定)。有关详细信息,请参阅this article。你将不得不像其他用户指出的那样使用Fluent,EF不会自己这样做。