我正在为我的.NET应用程序使用Entity Framework。我已经能够返回对象及其直接相关的对象(非常方便),但是我无法获取这些对象的对象。
IEnumerable<Lot> i = (((ObjectSet<Car>)_carRepository.GetQuery())
.Include(a => a.CarTypes).Take(10).ToList()
这可行,我可以访问carTypes,但是我无法弄清楚如何访问与CarTypes相关联的表格(例如,包含与汽车类型相关联的字段的表格)。
我尝试使用加入,但我无法弄清楚如何让它正常工作。
所有帮助表示赞赏。
答案 0 :(得分:1)
包含可以链接,但你必须记住它使用字符串而不是lambdas。如果你想要一个两级包含,你就这样做.Include(“CarTypes.Company”)。您还可以链接Include语句,这意味着包括来自同一顶级的多个分支 - 例如。 .INCLUDE( “CarTypes”)。包含( “SomeOtherTypeFromTheSameParentAsCar”)。
但是,您应该记住,深度Include语句可能无法产生最佳性能,因为Include的每个部分只会添加到您正在构建的一个查询中,因此您将获得更大,更复杂的查询在封面下做了很多连接。有时,在一个查询中执行一些包含然后发出第二个查询以获取其余数据或类似内容会更有效。
使用EF4,您还可以设置延迟加载,有时可以使这种事情更容易(但当然它会产生多次往返而不是一两次非常大的往返)。
答案 1 :(得分:0)
我相信你可以链接包含......所以你可以拥有像
这样的东西.Include(a => a.CarTypes.Company)
如果您只是使用每种类型的一个或两个字段,则可能在数据库中创建一个视图。然后,您可以将此视图添加到EF模型并直接访问这些属性。