2015-12-02 55 views
4

我有兩個實體。 ProfileProfileImages。取得Profile後,我想刪除ProfileImagesProfile,而不刪除對Profile(將其設置爲null)的引用。這可以通過流暢的API和層疊刪除來完成?我是否設置了HasRequired屬性或CascadeDelete屬性?使用Fluent API級聯刪除

public class Profile 
{ 
    //other code here for entity 
    public virtual ICollection<ProfileImage> ProfileImages { get; set; } 
} 

public class ProfileImage 
{ 
    // other code here left out   
    [Index] 
    public string ProfileRefId { get; set; } 

    [ForeignKey("ProfileRefId")] 
    public virtual Profile Profile { get; set; } 
} 

回答

3

您可以添加到您的DB Context

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Profile>() 
    .HasOptional(c => c.ProfileImages) 
    .WithOptionalDependent() 
    .WillCascadeOnDelete(true); 
} 

在這裏閱讀更多:Enabling Cascade Delete

您可以配置級聯使用 WillCascadeOnDelete方法上的關係刪除。如果從屬實體 上的外鍵不可爲空,則Code First會在 關係中設置級聯刪除。如果依賴實體上的外鍵可爲空,則 Code First不會在關係上設置級聯刪除,並且當 主體被刪除時,外鍵將設置爲null。