Я использую C # с ядром Entity Framework и SQL Server.
Я хочу смоделировать что-то похожее на составную структуру, но у меня есть некоторые проблемы с сохранением структуры в репозитории.
Это ошибка, которую я получаю:
Невозможно сохранить изменения, поскольку в данных, которые будут сохранены, обнаружена циклическая зависимость: 'LogicAnd [Added] ParentComponent {' ParentComponentId1 '}<- Условие [Добавлено] <- CompDer {'CompDerId'} LogicAnd [Добавлено] '. </p>
Базовый класс:
public abstract class Component
{
public Guid Id { get; set; }
public int ParentComponentId { get; set; }
public virtual Component ParentComponent { get; set; }
public abstract bool Evaluate();
}
Класс листа:
public class Condition : Component
{
public virtual ValueExpression ValueIzq { get; set; }
public virtual ValueExpression ValueDer { get; set; }
public String Operation {get;set;}
public override bool Evaluete(){....}
}
Абстрактный составной класс:
public abstract class LogicExpression : Component
{
public virtual Component CompIzq { get; set; }
public virtual Component CompDer { get; set; }
}
Составные производные классы:
public class LogicAnd : LogicExpression
{
public override bool Evaluete()
{
.....
}
}
public class LogicOr : LogicExpression
{
public override bool Evaluete()
{
.....
}
}
Контекст:
public DbSet<Condition> Conditions { get; set; }
public DbSet<LogicAnd> LogicAnds { get; set; }
public DbSet<LogicOr> LogicOrs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Component>().ToTable("Components");
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseLazyLoadingProxies();
}
Чего мне не хватает?