Удаленный объект, восстановленный каскадом - таблица с собственной ссылкой

Я получаю следующую ошибку: "Удаленный объект будет повторно сохранен каскадом (удалить удаленный объект из ассоциаций)"

Я обрезал весь вызов ajax следующим образом:

    [HttpPost]
    [UnitOfWork(Scope = FilterScope.Result)]
    public ActionResult SaveEditMode(long id, AddTrackedRowViewModel model, string editMode, List<string> elementNames, string provisionData)
    {    
       var cell = _supplementCoordinator.GetSupplement(id).TrackedTables.First(x => x.Name == model.Name).TrackedRows.First(x => x.Ordinal == model.Ordinal).TrackedCells.First(x => x.Name == "Detail");
       _supplementCoordinator.RemoveChildren(cell);

        return Json( new {Success = true});
    }



    public bool RemoveChildren(TrackedNode parentNode)
    {
        foreach (TrackedField trackedField in parentNode.ChildNodes)
        {
            _trackedFieldRepository.Delete(trackedField);
        }
        return true;
    }

Мои сопоставления следующие

        mapping.HasMany(x => x.ChildNodes).KeyColumn("ParentNodeId").Inverse();
        mapping.References(x => x.ParentNode);

1 ответ

Решение

Просто удалите дочерние узлы из родительской коллекции, как показано в ошибке:

public bool RemoveChildren(TrackedNode parentNode)
    {
        foreach (TrackedField trackedField in new List<TrackField>(parentNode.ChildNodes))
        {
            _trackedFieldRepository.Delete(trackedField);
            _parentNode.Remove(trackField);
        }
        return true;
    }
Другие вопросы по тегам