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

Performance 使用EF4.1查询树结构时的最佳性能,performance,tree,entity-framework-4.1,traversal,Performance,Tree,Entity Framework 4.1,Traversal,这是一个非常常见的问题,但我在谷歌上也找不到一个好的答案 我有一个标准的树结构 身份证 父ID 名字 外国人身份证 我的第一次查询尝试 return db.Tree .Where(t => t.ForeignKeyId == xxx && t.Parent == null).SingleOrDefault(); 这将导致对数据库进行N*2选择。对于非常小的树非常慢,对于大树超时 有没有什么好方法可以加快EF4.1的树遍历速度 编辑:这一个更好一

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

我有一个标准的树结构

  • 身份证
  • 父ID
  • 名字
  • 外国人身份证
我的第一次查询尝试

    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();
试试这个:

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