我有以下代码,看起来是徒劳的,尝试配置外键的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);
});
创建约束,如下所示:
SetNull
在不可为空的列GenderId
上,它会在Cascade
处得到{?}}? 16/08/2016 79.84 70.87
15/08/2016 80.26 71.79
12/08/2016 80.22 71.7
11/08/2016 80.56 71.98
10/08/2016 80.55 71.21
09/08/2016 81.5 73.05
08/08/2016 81.6 72.25
05/11/1990 17.5625 6.4011
02/11/1990 17.0938 6.4358
01/11/1990 17 6.5137
31/10/1990 16.8438 6.583
30/10/1990 17.3438 6.4444
29/10/1990 17.7813 6.3232
可能是默认值,忽略了我的配置。
答案 0 :(得分:1)
根据@bricelam的建议,我提交了一个问题,并在不到24小时内得到了正确答复。微软的Smit Patel建议:
在
project.json
中,您可以参考Microsoft.EntityFrameworkCore.Commands
被弃用了一段时间 以前,应该删除。
我删除了它,重新生成的迁移现在具有两个FK的正确onDelete
值。