2015-12-02 76 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。