需要将三个实体添加到具有两个1- *关系的数据库中

时间:2012-01-05 14:33:09

标签: entity-framework wcf-data-services

我需要调用一次SaveChanges() 这是我的模型(简化):

|出版者| 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个相关的“位置”。预计1'位置'

此处的上下文是WCF数据上下文(使用Web服务引用)

在调试器下,我可以看到书籍和位置的实体以及位置的链接 - >书籍

如果你告诉我该怎么做,感激不尽?

1 个答案:

答案 0 :(得分:0)

使用context.SaveChanges(SaveChangesOption.Batch)。 如果没有它,它会将每个更新作为单独的请求发送,服务器将尝试将每个请求单独应用于数据库。如果存在外键约束,则会失败。 使用Batch,客户端将在一个请求中发送所有内容,服务器将立即应用它,这应该可以。