0

これは奇妙ですか?EF 4.3オプションの関係でのベータ1カスケード削除孤児の離脱

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(); 

一部の画像が孤立することができますので、私はnullとしてALBUMIDを得ました。

そして、私は呼び出します。

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

アルバムは削除されますが、一度関連ここで画像が孤立され、それらALBUMIDが行から除去されます。

+1

http://stackoverflow.com/questions/5471374/how-do-you-ensure-cascade-delete-is-([...有効になっているあなたはどのようにカスケード削除を確認しない]を見てみましょうe-code-f-code-f) – Eranga

+0

驚くばかり!それは多くの人にとって重要なおかげです! –

答えて

1

これはそれでした。

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