【发布时间】:2016-10-02 14:54:39
【问题描述】:
我有以下代码,看起来是徒劳的,尝试为外键配置OnDelete 行为:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Contact>()
.HasOne(e => e.Gender)
.WithMany()
.HasForeignKey(e => e.GenderId)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<Contact>()
.HasOne(e => e.Title)
.WithMany()
.HasForeignKey(e => e.TitleId)
.OnDelete(DeleteBehavior.Restrict);
}
然而,当我生成第一个迁移时,它会创建这个表和另外两个表,它会为 Contact 创建约束,如下所示:
constraints: table =>
{
table.PrimaryKey("PK_Contact", x => x.Id);
table.ForeignKey(
name: "FK_Contact_Gender_GenderId",
column: x => x.GenderId,
principalTable: "Gender",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
table.ForeignKey(
name: "FK_Contact_Title_TitleId",
column: x => x.TitleId,
principalTable: "Title",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
在不可为空的列GenderId 上,它在哪里得到SetNull? Cascade 可能是默认值,忽略了我的配置。
【问题讨论】:
-
看起来像一个错误。你能submit a new issue吗?
-
@IvanStoev 请告诉为什么它不适用于 EF Core?如果不是 EF Core,我使用的
Microsoft.EntityFrameworkCore.*包是什么? -
您的问题呢,您可以考虑@bricelam 的建议,因为我无法使用 EF Core / Full .NET Framework 重现它。
-
我已经提交了一个问题,魔鬼自己正在处理它:Ref No. #6668
-
@IvanStoev 是的,对不起,我刚回复后怀疑这无关。
标签: entity-framework entity-framework-core .net-core