使用Fluent API进行级联删除

时间:2015-12-02 08:45:38

标签: c# entity-framework cascading-deletes ef-fluent-api

我有两个实体。 ProfileProfileImages。获取Profile之后我想删除ProfileImagesProfile,而不删除对Profile的引用(将其设置为null)。如何通过流畅的API和级联删除来完成?我是否设置了HasRequired属性或CascadeDelete属性?

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

1 个答案:

答案 0 :(得分: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。