Ваши классы имеют циклическую зависимость, поэтому, когда вы перейдете к удалению некоторых объектов, они будут разбиты с множественной ошибкой.если вы игнорируете удаление сущностей, вы можете добавить это в конструктор моделей вашего класса dbcontext.
protected override void OnModelCreating(ModelBuilder modelbuilder)
{
foreach (var relationship in modelbuilder.Model.GetEntityTypes().SelectMany(e
=> e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
base.OnModelCreating(modelbuilder);
}
Хотя правильным решением является изменение вашей бизнес-модели, которая не будет иметь циклическую зависимость.вы можете изменить свои классы таким образом, если вы не видите никаких проблем:
public class Newtask
{
[Key]
public int TId { get; set; }
public string Name { get; set; }
public int Estimated_days_of_work { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
public virtual ICollection<Subtask> Subtasks { get; set; }
}
public class Subtask
{
[Key]
public int SId { get; set; }
public string SubName { get; set; }
public int SEstimated_days_of_work { get; set; }
public int NewtaskTId { get; set; }
public virtual Newtask Newtasks { get; set; }
public virtual Substask HasSubtask{get;set;}
}
и измените свой построитель моделей в dbset на:
modelbuilder.Entity(typeof (Subtask))
.OnDelete(DeleteBehavior.Restrict);