【发布时间】:2014-12-09 12:09:48
【问题描述】:
使用 EF6,我在 SQL 数据库中有两个表,我首先使用数据库从数据库创建 EF 图。
我的数据库在一个表的 PK 和另一个表的外键之间缺少外键约束。
我没有将外键约束添加到数据库中,而是将其创建为 EF 模型中的关联。
该关联在 EF 模型中看起来不错,它具有正确的主体和依赖关系。
但是,如果我在存在依赖项的情况下从主体表中删除一行,则不会启动参照完整性,并且主体行会被删除。
我知道我可以将关系添加到 SQL 数据库并从数据库更新模型。但我想了解 EF 的功能范围,以及是否应该可以在 EF 模型中添加关系但不能在 SQL 数据库中添加关系并使其仍然有效?
在我看来,如果关联(关系)存在于 EF 中但不存在于 MSSQL 中,那么当您通过 EF 删除一行时,该关联会因为引用完整性而被忽略?
【问题讨论】:
-
你想要的功能已经存在于 EF 中,你只想正确使用它,如果你想删除父级并强制其所有依赖项也被删除,你需要将级联删除设置为 true。查看您的迁移文件设置的内容。此外,在删除父级时,您可能还需要加载其所有子级。
-
谢谢。我不是在寻找级联删除,我希望在尝试删除存在相关依赖行的主体行时引发参照完整性异常。正如我在问题中所说,我可以将关系添加到数据库模式中,但我想了解 EF 在参照完整性方面对关联的作用。似乎 EF 允许您创建一个关联,如果在 db 模式中没有对应关系,则该关联不涉及参照完整性?
标签: sql-server database entity-framework