【问题标题】:Cascade delete using Fluent API使用 Fluent API 进行级联删除
【发布时间】:2016-03-06 10:21:06
【问题描述】:

我有两个实体。 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; }
}

【问题讨论】:

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


    【解决方案1】:

    您可以将此添加到您的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 不会对关系设置级联删除,以及何时 主体被删除,外键将被设置为空。

    【讨论】:

      猜你喜欢
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多