EF 4.1: Удаление дочернего объекта из коллекции не приводит к его удалению - почему?

У меня ошибка: EF 4: Удаление дочернего объекта из коллекции не приводит к его удалению - почему?

когда я удаляю дочерний объект из родительского, который удаляется, когда я вызываю SaveChanges () , он дает следовать сообщению об ошибке:

Операция завершилась неудачно: связь не может быть изменена, поскольку одно или несколько свойств внешнего ключа не допускают значения NULL. Когда в отношение вносятся изменения, соответствующему свойству внешнего ключа присваивается значение NULL. Если внешний ключ не поддерживает нулевые значения, должна быть определена новая связь, свойству внешнего ключа должно быть присвоено другое ненулевое значение, или несвязанный объект должен быть удален.

Но с DbContext и EF 4.1, "context.DeleteObject (recipe)" не существует.

Есть предложения?

[EDIT]

    public void UpdateWithAttributes(Model model, IEnumerable entities)
    {
        var modelOriginal = this.unitOfWork.Model.GetById(model.IModel);

        this.unitOfWork.Context.Entry(modelOriginal).CurrentValues.SetValues(model);
        UpdateEntityAttributeAssociations(modelOriginal, entities);

        this.unitOfWork.Commit();
    }

    public void UpdateEntityAttributeAssociations(Model model, IEnumerable current)
    {
        unitOfWork.Context.Entry(model).Collection(m => m.Entities).Load();
ICollection original = model.Entities; // perhaps .ToList() necessary

        // delete
        if (original != null)
        {
            List toDelete = GetToDelete(original, current);

            foreach (Entity originalEntityToDelete in toDelete)
            {
                unitOfWork.Context.Entity.Remove(originalEntityToDelete);
            }
        }

        // add, update
        if (current != null)
        {
            foreach (Entity currentEntity in current)
            {
                // No need to set the UpdatedWhen. The trigger on the table will handle that.
                if (original.Where(originalEntity => originalEntity.IEntity == currentEntity.IEntity).FirstOrDefault() == null)
                {
                    model.Entities.Add(currentEntity);
                }
            }
        }
    }

5
задан Community 23 May 2017 в 12:12
поделиться