Скорее всего, у вас круговая зависимость (у Книги есть ссылка внешнего ключа на Комментарии, а Комментарии обратно на Книги). В этом случае UpdateTranslator в EF не может определить порядок зависимости. Насколько я могу судить, в этой модели развития нет способа передать подсказку EF, чтобы указать, каков порядок.
Самый распространенный способ решения этой проблемы (который я видел) - это двухфазный коммит. Внесите изменения в книгу, сохраните ее, затем внесите изменения в комментарии и сохраните их. Я обнаружил, что использование подхода Code First позволяет вам быть более точным в отношениях и, таким образом, решить многие проблемы, которые у меня были.
Edit:
Вот пример:
using (var context = new BookContext())
{
book.Title = "This is the new title";
context.SaveChanges();
book.Comments.Add(new Comment("This is a comment"));
context.SaveChanges();
}
Если существует циклическая зависимость, вы не могли бы выполнить вышеизложенное с помощью одного вызова SaveChanges
.