关于可选关系的EF 4.3 Beta 1,级联删除会留下孤儿

时间:2012-01-27 16:11:01

标签: entity-framework ef-code-first one-to-many cascading-deletes

这是奇怪的吗?

当删除一对多关系时,如果关系是可选的并且您删除了父对象,则其余对象将保持孤立状态,并且不会级联删除。

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

在Image Entity下,我将AlbumId视为Nullable,因为有些图像可能是孤立的。

然后我打电话。

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

相册被删除,但曾经相关的图像是孤立的,而且他们的AlbumId会从行中删除。

1 个答案:

答案 0 :(得分:1)

这样做了。

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