2014-12-02 146 views
0

让我们假设我有2类:实体框架 - 级联删除

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的每张照片。

回答

1

用流利的API语境中运用级联删除

modelBuilder.Entity<Photo>() 
         .HasRequired(c => c.Album) 
         .WithMany(a => a.Photoes) 
         .WillCascadeOnDelete(true); 
+0

假设在我的项目中,我需要关闭此选项:d – CSharpBeginner 2014-12-02 17:12:13

+0

然后,您将删除它们 – 2014-12-02 23:33:55

1

EF不会做级联删除自身。它依赖于数据库定义是正确的,然后假定数据库将在指定时执行级联删除。有关更多信息,请参见this article。您将不得不使用Fluent,因为其他用户指出,EF本身不会这样做。