.net core 比较后删除EF core中的子实体记录

.net core 比较后删除EF core中的子实体记录,.net-core,entity-framework-core,.net Core,Entity Framework Core,我有一个聚合实体的子实体,具有一对多关系,在子实体中,有一个包含父id的列表。来自前端的数据是一个对象列表,如果它与来自后端的数据没有什么不同,我将对它不做任何处理。否则,我将删除已删除的内容,并将已添加的内容添加到表中 我是EF CORE的新手,我正在尝试将此登录应用于此关系 if (child.list.SuccessorId == parent.vehicleCategoryId) => ignore; if(!child.list.contain(parent.vehicleCa

我有一个聚合实体的子实体,具有一对多关系,在子实体中,有一个包含父id的列表。来自前端的数据是一个对象列表,如果它与来自后端的数据没有什么不同,我将对它不做任何处理。否则,我将删除已删除的内容,并将已添加的内容添加到表中

我是EF CORE的新手,我正在尝试将此登录应用于此关系

if (child.list.SuccessorId == parent.vehicleCategoryId) => ignore;
if(!child.list.contain(parent.vehicleCategoryId)
 remove(parent.vehicleCategoryId) => //delete record with vehicleCategoryId
  else 
    add(child)
这是我的实体

public class VehicleCategory : LookupAggregateRoot<VehicleCategory>
{
    #region Constructor

    private VehicleCategory()
    {
        _successors = new List<VehicleSuccessorCategory>();
    }

    #endregion

    #region Data

    public virtual LocalizedText Name { get; set; }
    public virtual long Sequence { get; set; }
    private readonly List<VehicleSuccessorCategory> _successors;

    public IEnumerable<VehicleSuccessorCategory> Successors
    {
        get => _successors.AsReadOnly();
        set => throw new NotImplementedException();
    }

    #endregion

    #region Behaviour

    public void AddSuccessor(VehicleSuccessorCategory entrySuccessorCategory)
    {
        _successors.Add(entrySuccessorCategory);

    }

    public void RemoveSuccessor(VehicleSuccessorCategory entrySuccessorCategory)
    {
        _successors.Remove(entrySuccessorCategory);
    }
}


public class VehicleSuccessorCategory : ID365Entity<int>, IEnumerable
{
    #region Constructor

    public int Id { get; set; }
    public int SuccessorId { get; set; }
    public VehicleSuccessorCategory(int order)
    {
        Order = order;
    }

    #endregion

    #region Data

    public int Order { get; set; }

    #endregion

    public bool IsTransient()
    {
        throw new NotImplementedException();
    }


    public IEnumerator GetEnumerator()
    {
        yield return Id;
        yield return Order;
    }
}
 VehicleCategory vehicleCategory = _genericRepository.Get(aggregate.Id);
        foreach (var successorCategory in aggregate.Successors)
        {
            var successorCategoryToRemove =
                vehicleCategory.Successors.Where(e => e.SuccessorId == successorCategory.SuccessorId);
            foreach (var vehicleSuccessorCategory in successorCategoryToRemove)
                vehicleCategory.RemoveSuccessor(vehicleSuccessorCategory);
        }