首先使用EntityFrameworkCore(5.0.17)代码,我在实现一个类时遇到了麻烦,这个类有两个对另一个类的引用。
这是我结构:
第一个
位置引用上的Required属性使得无法更新数据库上的表。这是我收到的错误消息:
在表' Races
'上引入FOREIGN KEY
约束' FK_Races_Locations_StartLocationId
'可能导致循环或多个级联路径
指定ON DELETE NO ACTION
或ON UPDATE NO ACTION
,或修改其他FOREIGN KEY
约束。
无法创建约束或索引。
2条答案
按热度按时间k7fdbhmy1#
该模型有多个级联路径:
而SQL Sever不允许这样做。要了解这一点,请查看以下数据:
在
BeneficioA
中,Beneficio和Otorgador是同一个ComercioA
.那么当BeneficioA
被删除时,ComercioA
被级联删除两次。但这似乎是合法的,只需要
ComercioA
一次。其他DBMS,如MySQL管理这一点。那么为什么不SQL Server?我不知道,也没有找到任何官方信息。只找到了这个:
SQL Server - Why can't we have multiple cascade paths?
...因此,该实现并没有修复它,而是通过防止定义重复的级联路径来避免它。这显然是一条捷径...
SQL Server有这个限制,我们需要接受它。一个解决方案是通过将外键和导航属性设置为nullable来禁用删除级联行为:
iszxjhcz2#
您可以使用fluent api来配置关系。
在两个属性上都这样做。