GraphDiff: запретить удаление и вставку, когда элемент перемещается между списками - PullRequest
0 голосов
/ 08 октября 2019

У меня есть следующие (несколько упрощенные) объекты

public class Page
{
   public Guid Id { get; set; }
   public virtual ICollection<Section> Sections { get; set; }
}

public class Section
{
   public Guid Id { get; set; }
   public Guid PageId { get; set; }
   public virtual ICollection<Question> Questions { get; set; }
}

public class Question
{
   public Guid Id { get; set; }
   public Guid SectionId { get; set; }
   public virtual ICollection<Answer> Answers { get; set; }
}

И GraphDiff настроен следующим образом:

context.UpdateGraph(page, map => map
.OwnedCollection(p => p.Sections, with => with
.OwnedCollection(s => s.Questions)

Вопросы могут иметь ответы, но отсутствуют в запросе на обновлениестраница.

Теперь, когда я перемещаю Вопрос в другой Раздел, GraphDiff выполняет вставку и удаление перемещенного Вопроса с обновленным Идентификатором Раздела.

Когда есть Ответы на этот Вопрос, удалениеявно не разрешено.

Я бы хотел переместить Вопрос, чтобы выполнялось только обновление.

Я проверил репо GraphDiff, и похоже, что он проверяет, присутствует ли только сущность в исходном списке, а не во всем графике.

Я попытался использовать ChangeTracker после вызова UpdateGraph, чтобы проверить наличие Вопросов, которые присутствуют в состоянии «Добавлено» и «Удалено», и установить один на «Измененный» и «Отсоединить другой». К сожалению, проблема заключается в том, что группа связанных сущностей остается в состоянии «добавлено». Вручную отсоединять их было бы больно.

У кого-нибудь есть идеи, как лучше справиться с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...