【发布时间】:2010-09-18 19:49:34
【问题描述】:
我已经看到很多关于 Linq2Sql 中的自引用表以及如何为特定根对象急切加载所有子记录的问题。我通过访问所有底层属性实现了一个临时解决方案,但是您可以看到这对性能没有任何好处。
问题是,所有记录都使用关联 GUID 相互关联。示例如下:
RootElement
- Id: 1
- ParentId: null
- CorrelationId: 4D68E512-4B55-44f4-BA5A-174B630A03DD
ChildElement1
- Id: 2
- ParentId: 1
- CorrelationId: 4D68E512-4B55-44f4-BA5A-174B630A03DD
ChildElement2
- Id: 3
- ParentId: 2
- CorrelationId: 4D68E512-4B55-44f4-BA5A-174B630A03DD
ChildElement1
- Id: 4
- ParentId: 2
- CorrelationId: 4D68E512-4B55-44f4-BA5A-174B630A03DD
在我的例子中,我确实可以访问correlationId,所以我可以通过执行以下查询来检索我的所有记录:
from element in db.Elements
where element.CorrelationId == '4D68E512-4B55-44f4-BA5A-174B630A03DD'
select element;
但是,当然,我希望通过执行以下查询将这些元素相互关联:
from element in db.Elements
where element.CorrelationId == '4D68E512-4B55-44f4-BA5A-174B630A03DD' && element.ParentId == null
select element;
我的问题是:是否可以将第一个查询的结果组合为某种“缓存机制”,用于获取根元素的查询?
感谢您的意见。
J.
【问题讨论】:
标签: c# linq-to-sql