【发布时间】:2013-09-17 16:44:45
【问题描述】:
我有两个实体:
public class Parent
{
public Guid Id { get; set; }
public string Name { get; set; }
}
public class Child
{
public Guid Id { get; set; }
public string Name { get; set; }
public Parent Parent { get; set; }
}
我可以使用 Include 查询有或没有父实体的子实体。
public void Test()
{
var child = context.Set<Child>().Include(x => x.Parent)
.FirstOrDefault(x => x.Id == Guid.Parse("<some_id>"));
}
但在某些情况下,我已经将所有父实体缓存在内存中,并且我想跳过连接并查询仅加载了 Id 属性的子实体。然后通过 Id 从缓存中获取实际的 Parent:
public void Test()
{
var cachedParents = new List<Parent>();
var child = context.Set<Child>()
.FirstOrDefault(x => x.Id == Guid.Parse("<some_id>"));
var parent = cachedParents.FirstOrDefault(x => x.Id == child.Parent.Id);
}
但是 child 加载了 child.Parent == null。
有没有办法让 child.Parent 被加载或只访问 child.Parent.Id(ParentId 列)属性?
【问题讨论】:
标签: c# entity-framework