Необходимо добавить три объекта в базу данных с двумя отношениями 1- * - PullRequest
0 голосов
/ 05 января 2012

Мне нужно вызвать SaveChanges () один раз. Вот моя модель (упрощенно):

| Publisher |1 ------- * | Забронировать |* -------- 1 | Местоположение |

Вот что я делаю:

void AddBook(Publisher pub, Location loc) {
  Book b = Book.CreateBook(0,...);
  context.AddRelatedObject(pub, "Books", b);
  context.AddToLocations(loc);
  context.AddLink(loc, "Books", b);
  context.SaveChanges();
}

это исключение:

Сущности в 'Context.Books участвуют в отношениях LocationBook.0 связанных с 'Location' были найдены.1 Ожидается «Местоположение»

Контекст здесь является контекстом данных WCF (с использованием ссылки на веб-сервис)

В отладчике я могу видеть объекты для книги и местоположения и ссылку для местоположения-> Книга

Цените, если вы скажете мне, как это сделать?

1 Ответ

0 голосов
/ 05 января 2012

Использовать context.SaveChanges (SaveChangesOption.Batch).Без этого он будет отправлять каждое обновление в виде отдельного запроса, и сервер будет пытаться применить каждый из этих запросов отдельно к БД.Если есть ограничения внешнего ключа, это не удастся.С Batch клиент будет отправлять все в одном запросе, а сервер применяет все сразу, что должно работать.

...