EF 4.3 Beta 1 на факультативном отношении Каскад Удалить листья сирот - PullRequest
0 голосов
/ 27 января 2012

Это нечетно?

При удалении отношений один ко многим, если связь является необязательной, и вы удаляете родительский объект, остальные останутся сиротами и не будут каскадно удаляться.

    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 Ответ

1 голос
/ 27 января 2012

Это сделал это.

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