2012-07-13 47 views
2

我有一個非常簡單的單向類映射。與WillCascadeOnDelete單向關聯

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

正如你所看到的,跟有數字的列表,但數量不知道什麼接觸(它不會有一個屬性上它的父)。 我在這裏要做的是實現以下內容: 當從聯繫人中刪除號碼並使用SaveChanges保存時,我希望將該號碼行從數據庫中刪除,但是EF將該外鍵設置爲空,行保留在數據庫中。任何想法有什麼不對?

謝謝。

回答

2

這很煩人,但EF沒有提供任何方法來自動刪除孤兒。

您必須手動刪除PhoneNumber情況下(即context.Number.Remove(theNumber)

+0

太可惜了。你知道這是在EF 5的支持?不管怎樣,謝謝:) – Davita 2012-07-14 08:59:42

+0

不,我知道了。如果您還處於初始階段,其他ORM確實會支持這一點。 – 2012-07-14 13:37:24