为什么我的EF Core迁移忽略了模型的OnDelete设置?

时间:2016-10-02 14:54:40

标签: entity-framework entity-framework-core .net-core

我有以下代码,看起来是徒劳的,尝试配置外键的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 可能是默认值,忽略了我的配置。

1 个答案:

答案 0 :(得分:1)

根据@bricelam的建议,我提交了一个问题,并在不到24小时内得到了正确答复。微软的Smit Patel建议:

  

project.json中,您可以参考   Microsoft.EntityFrameworkCore.Commands被弃用了一段时间   以前,应该删除。

我删除了它,重新生成的迁移现在具有两个FK的正确onDelete值。