我有一个非常简单的单向类映射。
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保存时,我希望从数据库中删除该号码行,而是将外键设置为空,并且该行保留在数据库中。知道什么是错的吗?
感谢。
答案 0 :(得分:2)
这很烦人,但EF没有提供任何方法来自动删除孤儿。
您必须手动删除PhoneNumber
个实例(即context.Number.Remove(theNumber)
。