У меня есть следующие (несколько упрощенные) объекты
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, чтобы проверить наличие Вопросов, которые присутствуют в состоянии «Добавлено» и «Удалено», и установить один на «Измененный» и «Отсоединить другой». К сожалению, проблема заключается в том, что группа связанных сущностей остается в состоянии «добавлено». Вручную отсоединять их было бы больно.
У кого-нибудь есть идеи, как лучше справиться с этим?