![](/img/trans.png)
[英]Self-referencing in EF core Error: the insert statement conflicted with the foreign key same table constraint
[英]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.