簡體   English   中英

EF 7:INSERT語句與FOREIGN KEY SAME TABLE沖突

[英]EF 7 : INSERT statement conflicted with the FOREIGN KEY SAME TABLE

當我調用SaveChangesAsync時,我有一個例外。 我的架構非常簡單,我有一個類別,包含

public class Category {
  public Guid ID {get; set;}
  public Guid? ParentId {get; set;}
  public Category Parent {get; set;}
 [...]
}

當我想在數據庫中插入一個新類別(連接到我的ASP MVC應用程序)時,我在執行插入之前設置了GUID。 當我的數據庫為空並且我想插入父類別時發生錯誤(所以使用null Guid IdParent和null Parent)。 如果我設置父值,則不會發生這種情況。 我可以通過Visual Studio將父設置為Null來手動添加記錄。

我有以下錯誤:

INSERT語句與FOREIGN KEY SAME TABLE約束“FK_Category_Category_ParentId”沖突。 沖突發生在數據庫“HT_Root”,表“dbo.Category”,列“ID”中。 該語句已終止。

我在堆棧溢出搜索了一個簡單的答案,但沒有找到它。 我嘗試使用Fluent API:

modelBuilder.Entity<Category>().HasOne(s => s.Parent).WithMany().HasForeignKey(s => s.ParentId);

但沒有改變。 我究竟做錯了什么 ?

它似乎在EF 7中發生了變化。 請參閱此github問題

嘗試

public class Category 
{
    public Guid ID {get; set;}
    public Guid? ParentId {get; set;}
    public Category Parent {get; set;}
    public ICollection<Categories> Children {get; set;}
}

modelBuilder.Entity<Category>()
    .HasOne(x => x.Parent)
    .WithMany(x => x.Children)
    .HasForeignKey(x => x.ParentId)
    .Required(false);

您還應始終檢查數據庫中是否存在ParentId(如果已指定)。 注意添加Guid.Empty (00000000-0000-0000-0000-000000000000)而不是null因為這可能會導致問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM