我正在使用 efcore 2.0.1 版本。
我有一个模型:
public class BigAwesomeDinosaurWithTeeth
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public ICollection<YummyPunyPrey> YummyPunyPrey { get; set; }
}
public class YummyPunyPrey
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public Guid? BigAwesomeDinosaurWithTeethId { get; set; }
[ForeignKey("BigAwesomeDinosaurWithTeethId")]
public BigAwesomeDinosaurWithTeeth BigAwesomeDinosaurWithTeeth { get; set; }
}
我在这两个类上没有流畅的api。但当我生成迁移时
constraints: table =>
{
table.PrimaryKey("PK_YummyPunyPrey", x => x.Id);
table.ForeignKey(
name: "FK_YummyPunyPrey_BigAwesomeDinosaurWithTeeth_BigAwesomeDinosaurWithTeethId",
column: x => x.BigAwesomeDinosaurWithTeethId,
principalTable: "BigAwesomeDinosaurWithTeeth",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
为什么文档说应该将其处理为"ClientSetNull",但实际上生成了"onDelete: ReferentialAction.Restrict"?任何关于此发生原因的帮助将不胜感激。https://learn.microsoft.com/en-us/ef/core/saving/cascade-delete
行为名称 | 对内存中的相关/子级的影响 | 对数据库中的相关/子级的影响
ClientSetNull(默认) | 外键属性被设置为null | 无影响
在EF Core 2.0的更改: 在之前发布的版本中,Restrict会导致已跟踪的相关实体中的可选外键属性被设置为null,并且是可选关系的默认删除行为。在EF Core 2.0中,引入了ClientSetNull来表示该行为,并成为可选关系的默认值。 Restrict的行为已调整为从未对相关实体产生任何副作用。