【发布时间】:2012-06-05 12:13:00
【问题描述】:
考虑我有 2 个实体 - a) Publisher b) Book Publisher 具有称为 PublishedBooks 的导航属性,它是书籍的集合。 假设 Publisher1 已经出版了 2 本书,即 Book1 和 Book2 我想做的是,对于 Publisher1,删除已出版的书 Book1 和 在数据库中添加一本新出版的书(即 Book3)。
Context.SaveChanges() 抛出错误 -
操作失败:无法更改关系,因为 一个或多个外键属性不可为空。当一个 对关系进行更改,相关的外键属性是 设置为空值。如果外键不支持空值, 必须定义一个新的关系,外键属性必须是 分配了另一个非空值,或者不相关的对象必须是 已删除。
注意:删除级联规则存在于数据库和上下文类中。 顺便说一句,我使用的是 C# 和 Sql Server 2005。
【问题讨论】:
-
// 我正在尝试从出版商的图书收藏中删除这本书 - Publiser1.Books.Remove(Publisher1.Books.First()); // 然后将新书添加到与 - 相同的集合中 - var newbook = new book(){}; Publisher1.Books.Add(newbook); Context.SaveChanges();
-
谢谢,但请将代码添加到您的问题中。还要显示 Book 和 Publisher 类,以便其他人知道您当前是如何实现它的。因此,如果您在代码中有一些错误,他们可以纠正您;)
-
肯定会创建一个 poc 并上传
标签: c# entity-framework