在子實(shí)體上設(shè)置外鍵時,如下所示:modelBuilder.Entity<Child>() .HasOne(c => c.Parent) .WithMany(p => p.Children) .HasForeignKey(c => c.ParentId) .OnDelete(DeleteBehavior.Cascade);我能夠配置約束的“刪除時”行為。結(jié)果遷移看起來像這樣: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 或?qū)傩詠碜龅竭@一點(diǎn)的方法。是否可以為外鍵配置 EF Core“更新時”行為?
1 回答

炎炎設(shè)計(jì)
TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊
今天的 Fluent API 不可能做到這一點(diǎn)。
我們(EF 團(tuán)隊(duì))根據(jù) SQL 規(guī)范設(shè)計(jì)了 MigrationBuilder API。這使您可以手動執(zhí)行許多目前在 EF Core 中沒有意義的事情。但這可能會隨著時間的推移而改變。例如,從 3.0 開始,實(shí)體類型可以映射到?jīng)]有主鍵的表,遷移將創(chuàng)建它們。從 1.0 開始,您就可以手動創(chuàng)建沒有主鍵的表。
- 1 回答
- 0 關(guān)注
- 212 瀏覽
添加回答
舉報
0/150
提交
取消