我可能正在解决EF中一个更大的可用性问题。
我需要对模型的很大一部分进行计算。例如,假设我们需要一座建筑物,其所有门都是这些门的类别。但我还需要窗户,家具,屋顶等。
想象一下,我的逻辑还取决于这些类别背后的更多耦合表(子类别等)。
我们在代码中的很多方面需要大部分这个模型,所以我需要通过EF填充和链接整个模型。
为此,我们只是查询ObjectContext并使用type-safe includes。
但这实际上很容易出错。
有没有人有解决这类问题的建议?
答案 0 :(得分:3)
使用投影仅获取所需的值,尤其是在您不打算更新所有内容时。你可能不需要家具等的每一个属性。所以不是检索实体本身,而是预测你想要的东西:
from b in Context.Buildings
where b.Id == 123
select new
{
Name = b.Name,
Rooms = from r in b.Rooms
select new
{
XDimension = r.XDimension,
// etc.
现在你再也不用担心是否装了东西;你需要的东西是加载的,你不需要的东西不是。生成的SQL也会非常简单。