2

我有一个非常简单的单向类映射。

public class MyDbContext : DbContext
{
    public MyDbContext() : base("CodeFirstDatabase")
    {

    }

    public DbSet<Contact> Contacts { get; set; }
    public DbSet<PhoneNumber> Number { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
        modelBuilder.Entity<Contact>()
            .HasMany(c => c.Numbers)
            .WithOptional()
            //.Map(p => p.MapKey("ContactId"))
            .WillCascadeOnDelete(true);
    }
}

如您所见,Contact 有一个 Numbers 列表,但 Number 对联系人一无所知(它的父级没有属性)。我在这里要做的是实现以下目标:当从联系人中删除号码并使用 SaveChanges 保存时,我希望从数据库中删除该号码行,但是,EF 将外键设置为 null 并且该行仍然存在在数据库中。知道有什么问题吗?

谢谢。

4

1 回答 1

2

这很烦人,但 EF 不提供任何自动删除孤儿的方法。

您必须手动删除PhoneNumber实例(即context.Number.Remove(theNumber).

于 2012-07-13T23:13:47.673 回答