在子实体上设置外键时,如下所示:modelBuilder.Entity<Child>() .HasOne(c => c.Parent) .WithMany(p => p.Children) .HasForeignKey(c => c.ParentId) .OnDelete(DeleteBehavior.Cascade);我能够配置约束的“删除时”行为。结果迁移看起来像这样:migrationBuilder.CreateTable( name: "Child", columns: table => new { Id = table.Column<Guid>(nullable: false), ParentId = table.Column<Guid>(nullable: false) }, constraints: table => { table.PrimaryKey("PK_Child", x => x.Id); table.ForeignKey( name: "FK_Child_Parent_ParentId", column: x => x.ParentId, principalTable: "Parent", principalColumn: "Id", onDelete: ReferentialAction.Cascade); });在生成的迁移中,我可以直接编辑 onUpdate 行为,如方法签名中所示:public virtual OperationBuilder<AddForeignKeyOperation> ForeignKey( [NotNull] string name, [NotNull] Expression<Func<TColumns, object>> column, [NotNull] string principalTable, [NotNull] string principalColumn, [CanBeNull] string principalSchema = null, ReferentialAction onUpdate = ReferentialAction.NoAction, ReferentialAction onDelete = ReferentialAction.NoAction);但我无法找到通过流畅的 API 或属性来做到这一点的方法。是否可以为外键配置 EF Core“更新时”行为?
1 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
今天的 Fluent API 不可能做到这一点。
我们(EF 团队)根据 SQL 规范设计了 MigrationBuilder API。这使您可以手动执行许多目前在 EF Core 中没有意义的事情。但这可能会随着时间的推移而改变。例如,从 3.0 开始,实体类型可以映射到没有主键的表,迁移将创建它们。从 1.0 开始,您就可以手动创建没有主键的表。
- 1 回答
- 0 关注
- 143 浏览
添加回答
举报
0/150
提交
取消