我正在为我的 .NET 应用程序使用实体框架。我也能够返回对象及其直接相关的对象(非常方便),但我在获取这些对象的对象时遇到问题。
IEnumerable<Lot> i = (((ObjectSet<Car>)_carRepository.GetQuery())
.Include(a => a.CarTypes).Take(10).ToList()
这是有效的,我可以访问 carTypes,但是我无法弄清楚如何访问与 CarTypes 关联的表(例如具有与汽车类型关联的字段的表)。
我尝试使用连接,但我无法弄清楚如何让它正常工作。
感谢所有帮助。
Include 可以链接起来,但您必须记住它使用字符串而不是 lambda。因此,如果您想要两级包含,则可以执行 .Include("CarTypes.Company") 。您还可以链接 Include 语句,这意味着包含来自同一顶层的多个分支 - 例如。包含(“CarTypes”)。包含(“SomeOtherTypeFromTheSameParentAsCar”)。
不过,您应该记住,深层 Include 语句可能不会产生最佳性能,因为 Include 的每个部分都只是添加到您正在构建的一个查询中,因此您将获得一个更大、更复杂的查询,该查询执行整个操作一堆隐藏的连接。有时,在一个查询中执行一些包含,然后发出第二个查询来获取其余数据或类似的内容会更有效。
使用 EF4,您还可以设置延迟加载,这有时可以使此类事情变得更加容易(但当然它会产生多个往返,而不是一两个非常大的往返)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)