2016-10-02 21 views
3

我在下面的代碼,看起來像一個徒勞的,嘗試配置外鍵OnDelete行爲:爲什麼我的EF Core遷移忽略模型的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); 
}); 

凡大火是否得到SetNull,在非空的列,GenderIdCascade也許是一個默認值,忽略了我的配置。

+0

看起來像一個錯誤。你能否[提交新的問題](https://github.com/aspnet/EntityFramework/issues/new)? – bricelam

+0

@IvanStoev請問爲什麼它不適用於EF Core?如果不是EF Core,我使用的Microsoft.EntityFrameworkCore。*包是什麼? – ProfK

+0

關於你的問題,你可能會考慮@bricelam的建議,因爲我無法用EF Core/Full .NET Framework重現它。 –

回答

1

正如@bricelam所說,我提交了一個問題,並在24小時內得到了正確的答覆。微軟的斯密特帕特爾建議:

在你project.json你必須參考 Microsoft.EntityFrameworkCore.Commands其棄用,而 前,應予刪除。

我將其刪除,現在重新生成的遷移具有正確的onDelete兩個FK的值。