0

這是奇怪的嗎?EF 4.3 Beta 1可選關係級聯刪除離開孤兒

當刪除一對多關係時,如果關係是可選的,並且您刪除父對象,其餘的將保持孤兒,並且不會級聯刪除。

var album = new Album 
       { 
        Name = "Test Album", 
        Description = "Test Album Description", 
        Images = new Collection<Image> 
        { 
         new Image { 
          Name = "Image 1", 
          Description = "Image 1 Description" 
         }, 
         new Image { 
          Name = "Image 2", 
          Description = "Image 2Description" 
         }, 
        } 
       }; 

      albumRepository.Add(album); 
      albumRepository.UnitOfWork.Commit(); 

在圖像實體下,我將AlbumId設置爲Nullable,因爲某些圖像可能是孤立的。

然後我打電話。

albumRepository.Delete(toRemove); 
albumRepository.UnitOfWork.Commit(); 

該專輯被刪除,但曾經關聯的圖像是孤立的,並且它們的AlbumId將從該行中刪除。

+1

看看[你如何確保級聯刪除啓用...](http://stackoverflow.com/questions/5471374/how-do-you-ensure-cascade-delete-is-啓用表中的關係在ef代碼f) – Eranga 2012-01-27 16:21:43

+0

太棒了!這是非常感謝很多人的關鍵! – 2012-01-27 16:45:39

回答

1

這樣做了。

modelBuilder.Entity<Image>() 
.HasOptional(d => d.Album) 
.WithMany(d => d.Images) 
.WillCascadeOnDelete(true);