是否可以为外键配置 EF core“ON UPDATE”行为?

在子实体上设置外键时,如下所示:


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“更新时”行为?


慕尼黑的夜晚无繁华
浏览 144回答 1
1回答

炎炎设计

今天的 Fluent API 不可能做到这一点。我们(EF 团队)根据 SQL 规范设计了 MigrationBuilder API。这使您可以手动执行许多目前在 EF Core 中没有意义的事情。但这可能会随着时间的推移而改变。例如,从 3.0 开始,实体类型可以映射到没有主键的表,迁移将创建它们。从 1.0 开始,您就可以手动创建没有主键的表。
打开App,查看更多内容
随时随地看视频慕课网APP