Нарушение множественности. Роль Child_Parent_Target отношения Child_Parent имеет множественность 1 или 0..1

c# code-first entity-framework entity-framework-6 sql-server-2008

Вопрос

Я провел много исследований, но не нашел ответа, который соответствует моей проблеме. Я даже пытался использовать отношения «Невозможно изменить», потому что один или несколько свойств внешнего ключа являются примерами, которые могут быть недействительными . Нет успеха.

Я работаю с Entity Framework 6 Code First (Fluent API), POCO Classes.

У меня есть класс под названием Parent и класс под названием Child

У одного родителя может быть одно или несколько детей (отношение один к одному)

Итак, в моем классе ParentMapping я сделал:

HasMany(p => p.Childs).WithRequired(p => p.Parent).Map(m => m.MapKey("ParentId"));

и в моем классе ChildMapping я сделал:

HasRequired(p => p.Parent).WithMany(p => p.Childs).Map(m => m.MapKey("ParentId"));

Я сохраняю (вставляю, обновляю и удаляю) свой дочерний класс poco, в то же время сохраняю родительский класс. Поэтому каждый раз, когда я сохраняю родительский класс, он имеет один или несколько дочерних объектов в свойстве Childs . Таким образом, родительский объект отвечает за сохранение своих дочерних объектов.

Я выполнил приведенный выше пример (см. Ссылку), чтобы сохранить данные в базе данных.

Я получаю сообщение ниже, когда я пытаюсь добавить нового ребенка в существующий родительский элемент, который уже имеет один дочерний элемент в базе данных, и вызывает db.SaveChanges :

Нарушение множественности. Роль Child_Parent_Target отношения Child_Parent имеет множественность 1 или 0..1.

Может кто-нибудь мне помочь? Я борюсь с этим и не вижу света в конце туннеля.

Принятый ответ

Я смог решить свою проблему, используя потрясающую библиотеку GraphDiff. Он просто делает все для нас, когда речь идет о родителях / детях.

Проверьте это на этом посту: GraphDiff - разрешение автоматических обновлений графика отдельных объектов




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему