首页 > 解决方案 > 多对多关系的软删除

问题描述

我发现与我的问题最相似的唯一问题是here,但它没有回答我的问题。我有这个模型:

public class Profile
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }  
    public bool IsDeleted {get; set; }
    public virtual ICollection<Program> AllowedPrograms { get; set; }
    public virtual ICollection<Program> DisAllowedPrograms { get; set; }
}

和这个 :

public class Program
{
    public int Id { get; set; }
    public string DisplayName { get; set; }     
    public bool IsActive { get; set; }
    public bool IsDeleted {get; set; }
    public virtual ICollection<Profile> AllowedProfiles { get; set; }
    public virtual ICollection<Profile> DisAllowedProfiles { get; set; }

}

如果我通过字段的帮助实现软删除,表IsDeleted中的条目会发生什么ProfileProgram他们是否被隐含地删除了?(我猜这个模型中有两个多对多关系)。如果我使用位于此处的实体框架过滤器。

还是我应该自己创建中间表并向IsDeleted其中添加字段?而且这种方法似乎改变了我的代码很多,我真的在寻找替代方法。

标签: c#entity-frameworkentity-framework-6soft-delete

解决方案


是的 ProfileProgram 表不会自动删除。是的,您应该创建 IsDeleted 表(不是字段)。


推荐阅读