我有以下 SQL 表:
ObjectTable
--------------------------------------------------
| ID | Name | Order | ParentID |
| int PK | nvarchar(50) | int | int FK |
ObjectTable.ParentID
是一个可以为空的字段,与不同的对象记录的 ID 有关系。LINQ-to-SQL 生成一个如下所示的类:
public class DbObject{
int ID { get; set; }
string Name { get; set; }
int Order { get; set; }
int? ParentID { get; set; }
DbObject Parent { get; set; }
EntitySet<DbObject> ChildObjects { get; set; }
}
当我加载一个DbObject
实例时,我需要能够递归地访问子对象,以便我可以将数据写入一个分层的 JSON 对象。
每次通过 访问元素时我会执行单独的查询
DbObject.ChildObjects
吗?由于 DB 事务花费的时间最长,因此这似乎是一种非常低效的加载递归层次结构的方法。使用 LINQ-to-SQL 和/或 EF 执行递归查询的最佳实践是什么?
LINQ-to-SQL 是否与公用表表达式集成?我在 linq-to-sql 中找到了公用表表达式 (CTE)?