Asp.net core ';FK#u Ratings#u Users#u UserId';在桌上';评级';可能导致循环或多个级联路径

Asp.net core ';FK#u Ratings#u Users#u UserId';在桌上';评级';可能导致循环或多个级联路径,asp.net-core,foreign-keys,entity-framework-migrations,Asp.net Core,Foreign Keys,Entity Framework Migrations,我正在.NET EFCore中尝试以下代码优先通过以下实体进行迁移 使用者 我使用命令dotnet ef migrations add InitialDatabase,但是当我尝试使用dotnet ef database update时,它会在cmd中抛出以下错误,如标题中所示 表“Ratings”上的“FK_Ratings_Users_UserId”可能导致循环或 多级联路径 我尝试在modelBuilder的级联行为的EFCore教程中添加as,但它不起作用,因为我遇到了相同的错误。我也尝试

我正在.NET EFCore中尝试以下代码优先通过以下实体进行迁移

使用者 我使用命令
dotnet ef migrations add InitialDatabase
,但是当我尝试使用
dotnet ef database update
时,它会在cmd中抛出以下错误,如标题中所示

表“Ratings”上的“FK_Ratings_Users_UserId”可能导致循环或 多级联路径

我尝试在modelBuilder的级联行为的EFCore教程中添加as,但它不起作用,因为我遇到了相同的错误。我也尝试过从中获得答案,但即使尝试安装
EntityFrameworkCore.Tools
,也无法实现
HasRequired

我知道这是一个循环的问题。从我的直觉来看,程序不知道在删除用户的情况下该怎么做,是否要删除它的收视率和公寓或类似的东西,这就是为什么它会这样做,但我无法解决问题

我的问题是,我如何解决这个问题,因为我不能创建我的数据库,因此我不能继续工作的项目


谢谢

通过将用户和单元添加到评级实体,您正在导致循环引用。用户和公寓实体已经与Ratings集合存在一对多关系

表“Ratings”上的“FK_Ratings_Users_UserId”可能导致循环或 多级联路径

这就是评级实体的外观:

[Table("Ratings")]
public class Rating
{
    [Key]
    public int Id { get; set; }

    public int Value { get; set; }
}

通过将用户和单元添加到评级实体,您正在导致循环引用。用户和公寓实体已经与Ratings集合存在一对多关系

表“Ratings”上的“FK_Ratings_Users_UserId”可能导致循环或 多级联路径

这就是评级实体的外观:

[Table("Ratings")]
public class Rating
{
    [Key]
    public int Id { get; set; }

    public int Value { get; set; }
}

您必须在其中一个表上选择用户关系,如:

public int? UserId { get; set; }

将属性类型设置为nullable会告诉EF此处不需要级联删除。

您必须将用户关系设置为其中一个表上的可选关系,如:

public int? UserId { get; set; }

将属性类型设为null会告诉EF此处不需要级联删除。

@vladel如果我的建议修复了EF错误,请告诉我。为什么评级表会是这样?如果它至少不实现导航属性,它就不会和其他表有任何连接。我需要评分表,因为用户可以对公寓进行评分,我需要确定他是否对公寓进行了评分,以防止他过度评分。谢谢你的帮助。@vladel让我知道我的建议是否修复了EF错误。为什么评级表会是这样?如果它至少不实现导航属性,它就不会和其他表有任何连接。我需要评分表,因为用户可以对公寓进行评分,我需要确定他是否对公寓进行了评分,以防止他过度评分。不管怎样,谢谢你的帮助。这很有效。我在某个地方读过一些关于使FK为空的东西,但我不确定。从一开始就应该尝试,但至少其他人会看到这个问题,并且也会解决他们的问题。谢谢!标记为答案。这个有效。我在某个地方读过一些关于使FK为空的东西,但我不确定。从一开始就应该尝试,但至少其他人会看到这个问题,并且也会解决他们的问题。谢谢!标记为答案的。
public int? UserId { get; set; }