假设我有 2 个表,A 和 B,关系为 1-0..1。我使用适配器方法。我需要在一个地方加载 A 实体的集合,然后为所有 A 实体加载所有相关的 B 实体。不使用 Prefetch 的原因是在大多数情况下我不需要加载 B 实体。
我到处都使用 LINQ,所以我想以同样的方式来做。
我正在尝试编写的代码如下所示:
var linqMetadata = new LinqMetaData(adapter)
{
ContextToUse = new Context()
};
var aCollection = linqMetadata.A.Where(/*some filter*/).ToList();
// ...
var bIds = aCollection.Select(x => x.BId);
var bCollection = linqMetadata.B.Where(x => bIds.Contains(x.BId)).ToList();
问题是bCollection
并且aCollection
保持不链接,即所有A
实体都有B = null
,反之亦然。我希望设置这些参考,因此将 2 个图表合并为一个。
我可以使用 LINQ to Objects 加入 2 个集合,但这并不优雅,此外,如果两个集合都包含需要建立互连的复杂图形,这可能会变得更加复杂。
我可以编写从 B 到 A 的预取,但这是一个完全没有必要的额外数据库查询。
有没有一种简单的方法可以合并这两个图表?