我有一个SQLite数据库设置,所以当我删除一个人删除级联。当我手动删除一个人(删除引用PersonID的所有记录)时,这工作正常。但是当我使用实体框架删除的人,我得到一个错误:级联删除使用实体框架和System.Data.SQLite的问题
System.InvalidOperationException: The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.
我不明白这是为什么发生。我的触发器设置为清除所有相关对象,然后删除它被告知要删除的对象。
当我进入模型编辑器并检查关系的属性时,它不显示OnDelete属性的操作。为什么从数据库中拉出它不正确?如果我将此值更改为级联,则一切正常,但我宁愿不要依赖此手动更改,因为如果从数据库刷新我的模型并且它丢失了该怎么办。
下面是我的表的relivent SQL。
CREATE TABLE [SomeTable]
(
[SomeTableID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[PersonID] INTEGER NOT NULL REFERENCES [Person](PersonID) ON DELETE CASCADE
)
CREATE TABLE [Person]
(
[PersonID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT
)
有没有办法解决你是否应该更新End1或End2?或者它只是试验和错误? – 2011-10-28 10:55:11
这取决于你的数据库建模的方式。如果你有一对多的关系,'一个'端应该被设置为'Cascade' – Omar 2011-10-28 14:08:28