, пожалуйста, помогите мне решить следующую проблему.У меня есть класс, как
public class TopicItem
{
public TopicItem()
{
_children = new List<TopicItem>();
}
public int Id { get; set; }
public string Title { get; set; }
public int? ParentId { get; set; }
public TopicItem Parent { get; set; }
public List<TopicItem> Children { get; set; }
}
и свободно
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<TopicItem>().HasKey(t => t.Id);
modelBuilder.Entity<TopicItem>().Property(t => t.Title).IsRequired();
modelBuilder.Entity<TopicItem>().Property(t => t.Alias);
modelBuilder.Entity<TopicItem>().HasOptional(t => t.Parent).WithMany(t => t.Children).HasForeignKey(t => t.ParentId);
//modelBuilder.Entity<TopicItem>().HasMany(t => t.Children).WithOptional(t => t.Parent).HasForeignKey(t => t.ParentId);
base.OnModelCreating(modelBuilder);
}
, но он не работает.Я пытаюсь использовать его следующим образом:
public void Recursion(List<TopicItem> items)
{
if (items != null)
{
foreach (var item in items)
{
Process(item);
}
Recursion(item.Children);
}
}
Recursion(MyContext.TopicItems.Where(t => t.Parent == null).ToList())
но свойство children для каждого родительского объекта имеет значение null.
возможно ли это сделать?