s'il vous plaît aidez-moi avec le problème suivant. J'ai une classe, commeEntityFramework code premier et circulaire référence un-à-plusieurs
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; }
}
et fluide
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);
}
mais il ne fonctionne pas. J'essaie de l'utiliser comme suit:
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())
mais la propriété children pour chaque entité parente est null.
est-il possible de le faire?