Это наиболее распространенный вопрос, но я не могу найти хорошего ответа и в Google.
У меня стандартная древовидная структура,
- Id
- ParentId
- Имя
- ForeignKeyId
Моя первая попытка запроса
return db.Tree
.Where(t => t.ForeignKeyId == xxx && t.Parent == null).SingleOrDefault();
Это приведет к выбору N * 2в базу данных.Очень медленный для довольно маленьких деревьев, время ожидания для больших деревьев.
Есть ли какой-нибудь хороший способ ускорить обход деревьев с помощью EF4.1?
edit: этот работает немного лучше
var eager = db.Tree.Include(t => t.Children).Where(t => t.ForeignKeyIdd == xxx).ToList();
return eager
.Where(t.Parent == null).SingleOrDefault();