У меня есть иерархия, как это:Query 4-уровней вложенности списка иерархии
public class BaseClass
{
public virtual List<FirstChild> Childs { get; set; }
}
public class FirstChild
{
public virtual List<SecondChild> Childs { get; set; }
}
public class SecondChild
{
public virtual List<ThirdChild> Childs { get; set; }
}
public class ThirdChild
{
public List<FourthCild> Childs { get; set; }
}
public class FourthCild
{
public int SomeProperty { get; set; }
}
Чтобы получить конкретный ThirdChild из экземпляра BaseClass, я пытался что-то вроде этого:
using (MyDb context = new MyDb())
{
context.BaseClass.Where(u => u.username == username).FirstOrDefault()
.FirstChild.Where(f => f.SomeId == idReceived).FirstOrDefault()
.SecondChild.Where(s => s.MyProperty.Identifier == identifierReceived).FirstOrDefault()
.ThirdChild.Where(t => t.Identifier == thirdIdentifier).FirstOrDefault();
}
Это самый короткий/самый чистый способ сделать это? Я думаю, что есть более простой способ, но я новичок в Entity Framework. У меня нет данных, чтобы проверить это на данный момент, так как я все еще моделирую его. Класс контекста выглядит следующим образом:
public class MyDb: DbContext
{
public DbSet<BaseClass> Base { get; set; }
public DbSet<FirstChild> First { get; set; }
public DbSet<SecondChild> Second { get; set; }
public DbSet<ThirdChild> Third { get; set; }
}
Определите и используйте свойство навигации Parent для каждого уровня. –