我有两个具有特定属性的模型:
public class Issue {
public int Id { get; set; }
}
public class Action {
public int Id { get; set; }
}
这是最后一个工作代码。然后,由于我忘记将Issue作为外键属性添加到操作中,我这样做了,它变成了:
public class Action {
public int Id { get; set; }
public Issue Issue { get; set; }
public int IssueId { get; set; }
}
生成的解决方案、创建的迁移方法和ef update数据库失败,错误如下:
正在应用迁移“20180220102738\u操作”。问题'。执行失败
DbCommand(20ms)[参数=[],命令类型='文本',
CommandTimeout=“30”]更改表[操作]添加约束
[FK\U Actions\U Issues\U IssueId]外键([IssueId])引用
删除级联上的[问题]([Id]);系统数据SqlClient。SqlException
(0x80131904):引入外键约束
表“Actions”上的“FK\u Actions\u Issues\u IssueId”可能导致周期或
多个级联路径。指定在删除时不执行任何操作或在更新时不执行任何操作
操作,或修改其他外键约束。
然后我尝试更改onDelete:ReferentialAction。级联到onDelete:引用。SetNull或其他任何东西都不起作用,顺便说一句,我不知道它可能有什么问题,这将是这个表上的第三个外键。
我的下一步是删除上次迁移,但它开始抱怨以下问题:
系统ArgumentException:集合参数
“foreignKeyPropertyNames”必须至少包含一个元素。在
微软EntityFrameworkCore。公用事业检查NotEmpty[T](IReadOnlyList
1
value, String parameterName) at
Microsoft.EntityFrameworkCore.Metadata.Builders.ReferenceCollectionBuilder
2、HasForeignKey(字符串[])
foreignKeyPropertyNames)位于
ISSupport。模型。IsupportContext<&燃气轮机;c、 b\uu 69\u 7(EntityTypeBuilder'1
b) 在中
我可以回滚到最后一次提交,但我不知道在下一轮中我做了什么,应该避免什么。谷歌没有帮助解决这个错误。
.NET Core 2.0
EF核心2.0
Sql Server 13.0.1742
使现代化
我不得不回滚并再次添加外键。它再次抱怨多个级联路径,现在我在migration Up()方法中将其更改为
onDelete: ReferentialAction.NoAction
并成功运行更新。我不知道我吃了什么!我之前已经准备好了,但仍然需要解释为什么我必须设置引用。无行动