【发布时间】:2016-05-01 23:19:58
【问题描述】:
当我调用 SaveChangesAsync 时出现异常。 我的架构非常简单,我有一个 Category 类,其中包含
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 将 parent 设置为 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);
但没有任何改变。我做错了什么?
【问题讨论】:
-
你试过
HasOptional而不是HasOne吗? -
@SergeyKolodiy 我在 EF 7 流式 API 中没有任何 HasOptional ...?
-
能否像使用 SSMS 一样在数据库中手动插入行?这听起来像您的数据库表设置不正确。
-
我可以通过 Visual Studio 添加它是的
-
不幸的是,是的,在我的数据库架构中,ParentId 是一个 FK,uniqueidentifier,Null
标签: c# sql-server asp.net-mvc entity-framework entity-framework-core