У меня есть следующая модель данных:
public class Bubble
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection <Level> Children { get; set; }
}
public class Level
{
public int Id { get; set; }
public int BubbleId { get; set; }
public int? ParentId { get; set; }
public string Name { get; set; }
public Bubble Bubble { get; set; }
public Level Parent { get; set; }
public virtual ICollection<Level> Children { get; set; }
}
Я хочу сохранить несколько наборов иерархических данных.Каждый набор принадлежит пузырю, который содержит уровни (узлы).Уровень может иметь либо собственную ссылку (родительский), равную нулю (глава дерева), либо другой уровень (подузел родительского).
Теперь моя проблема в том, что технически у уровня может быть родитель (собственный)ссылка), который действительно принадлежит другому пузырю.Это должно быть невозможно.
Как я могу убедиться, что только уровни с тем же BubbleId FK могут быть назначены в качестве родителя?