尝试使用EF Core 2.1配置一对多自我关系。 和流利的Api

这是我的配置

modelBuilder.Entity<ProductCategory>().Property(prop => prop.ParentCategoryId).HasDefaultValue(null);
modelBuilder.Entity<ProductCategory>()
     .HasOne(principal => principal.ParentCategory)
     .WithMany(dependent => dependent.ProductCategories)
     .HasForeignKey(fk => fk.ParentCategoryId)
     .IsRequired(false)
     .OnDelete(DeleteBehavior.SetNull);

这是模型

public class ProductCategory 
{
    public short Id { get; internal set; }
    public string Name { get; internal set; }
    public string Description { get; internal set; }

    public short? ParentCategoryId { get; internal set; }
    public ProductCategory ParentCategory { get; internal set; }

    public IEnumerable<Product> Products { get; internal set; }
    public IEnumerable<ProductCategory> ProductCategories { get; internal set; }
}

运行时

添加迁移名称

我得到这个例外

在表'ProductCategories'上引入FOREIGN KEY约束'FK_ProductCategories_ProductCategories_ParentCategoryId'可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。 请参阅先前的错误。

我做错了什么? 解决办法是什么 ?

  ask by echo translate from so

本文未有回复,本站智能推荐:

1回复

在EF Core 2中配置使用表拆分的关系

我正在尝试使用流畅的配置在EF Core 2中构建我的第一个表拆分。 我有两个名为User和Customer简单实体,我想在名为“ AppUsers”的单个表中使用它们。 因此,我为两者创建了一个简单的实体类: User.cs 和: 客户.cs 然后,我对MyD
1回复

如何使用FLUENT API配置此模型关系

用户(AskedUser)可以有其他用户(Asker)提出的许多问题。 用户(询问者)可以向其他用户(询问用户)提问。 因此,QuestionModel应该具有要查询的用户ID的外键和要提出问题的用户的外键。 我是否可以根据自己的期望构建模型? 如何使用流利的api配置它,这仅通过数
1回复

Fluent API:如何将 HasComputedColumnSql 与外键对象一起使用

我正在使用 Entity Framework Core 和 Fluent API 的代码优先方法,我正在尝试为一个表创建一个列,该列具有基于该表的其他列的生成值。 该表还包含外键,我想用不同于其 Id 的方式表示外键(例如名为 name 的列)。 这是我目前情况的通用代码。 public clas
1回复

如何在 EF Core 中配置、映射一对一关系

作为一名学生,我必须使用 .Net Core 设计我的第一个 WebApi。 我已经搜索了两天,还没有找到解决我问题的答案。 可能因为我是初学者。 我有以下课程: 我想配置我的数据库,这样我就可以获得所有船只的列表,以及它们的位置。 但我也想要一份所有地点的清单,如果有船,是或否。 在我看来
2回复

使用Fluent API编写一对一关系

如何使用流利的api编写one-to-one--or-zero关系? 有人可以帮我纠正我写的东西吗? 我不确定它是否正确。 场景:一个学生可以有一个或零个地址。 学生模型 地址模型 我试过的
1回复

零对多关系,还是别的什么? 使用 FluentAPI

我有一个“项目”表定义如下: 然后我有“ItemForSale”表: 实体: 我将如何在这些之间使用 FluentAPI? 我知道我可以在 Item 实体类中添加对 ItemForSale 的引用,但这对我来说没有意义。 到目前为止,我已经映射了我所有的一对一和多对多关系,但是 Ite
2回复

Entity Framework Core 零或一到零或一关系

鉴于这些类: 然后使用 Fluent API 创建对象并将它们添加到数据库时,相应表中的内容如下所示: [A].BId 已设置 [B].AId = 空 当我使用 EF Core 检索数据时: AB 已设置,A.BId 已设置 BA 已设置,但B.AId 为 null
2回复

在Entity Framework Core中建立关系

我正在尝试使用Fluent API在Entity Framework Core中建立一对多关系,但没有成功。 我有两个名为Message和Source的对象,它们被定义为 一个消息与一个消息源相关,一个消息与许多消息相关。 在我的上下文类中,我有以下内容 然后将关系定