使用EF4.1查询树结构时的最佳性能

时间:2011-11-01 15:42:00

标签: performance tree entity-framework-4.1 traversal

这是一个非常常见的问题,但我无法在谷歌上找到一个好的答案。

我有一个标准的树结构,

  • Id
  • ParentId
  • 姓名
  • ForeignKeyId

我第一次尝试查询

    return db.Tree
        .Where(t => t.ForeignKeyId == xxx && t.Parent == null).SingleOrDefault();

这将导致N * 2选择数据库。漂亮的小树很慢,大树超时。

有没有什么好方法可以加速使用EF4.1进行树遍历?

编辑:这个效果好一点

    var eager = db.Tree.Include(t => t.Children).Where(t => t.ForeignKeyIdd == xxx).ToList();

    return eager
        .Where(t.Parent == null).SingleOrDefault();

1 个答案:

答案 0 :(得分:0)

试试这个:

return db.Tree
        .Where(t => t.ForeignKeyId == xxx && t.ParentId == null)
        .SingleOrDefault();