【发布时间】:2020-02-14 10:20:17
【问题描述】:
我在使用 EF Core 3 时有以下要求。我有 (Id = 1 Pushup)、(Id = 2 Squat)、(Id = 3 Weight Lift) 和用户的练习。一旦完成一项练习,就会创建一个或多个新练习。可以使用 n 级创建多级层次结构。 我有一个问题,虽然这可能会导致练习的循环依赖。 例如俯卧撑 (1) 已完成。深蹲 (2) 已创建。深蹲 (2) 完成,然后创建举重 (3)。还有对举重(3)的依赖,一旦完成,它会创建俯卧撑(1)并导致循环依赖,我需要避免这种情况。 我举了一个非常简单的例子。在我的项目中,依赖关系可以达到 50 级,我不知道如何检查循环引用并避免它们。 下面是代码:
public class Exercise
{
public Exercise()
{
ExerciseDependencyExercises = new HashSet<ExercisesDependency>();
ExerciseDependencyTargetExercises = new HashSet<ExercisesDependency>();
UserExercises = new HashSet<UserExercise>();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<ExercisesDependency> ExerciseDependencyExercises { get; set; }
public virtual ICollection<ExercisesDependency> ExerciseDependencyTargetExercises { get; set; }
public virtual ICollection<UserExercise> UserExercises { get; set; }
}
public class UserExercise
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public long UserId { get; set; }
public long ExerciseId { get; set; }
}
public class ExercisesDependency
{
public long ExerciseId { get; set; }
public virtual Exercise Exercise { get; set; }
public long TargetExerciseId { get; set; }
public virtual Exercise TargetExercise { get; set; }
}
【问题讨论】:
标签: c# .net entity-framework .net-core entity-framework-core