2014-12-02 127 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本身不會這樣做。