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 には Number のリストがありますが、Number は Contact について何も知りません (親にプロパティがありません)。私がここでやろうとしているのは、次のことを達成することです:番号が連絡先から削除され、SaveChanges を使用して保存されると、その番号行をデータベースから削除したいのですが、代わりに、EF は外部キーを null に設定し、行は残りますデータベースで。何が問題なのですか?

ありがとう。

4

1 に答える 1

2

煩わしいですが、EFは孤立したものを自動的に削除する方法を提供していません。

インスタンスを手動で削除する必要がありPhoneNumberます(つまり、 context.Number.Remove(theNumber)

于 2012-07-13T23:13:47.673 に答える