EF使用.Include跨表导航

时间:2014-08-26 13:27:32

标签: linq entity-framework

我想扩展此查询..

        var itinerary = context.Itineraries
                .Include(i => i.ItineraryDays)
                .Include(i => i.ItineraryStartDates)
                .Where(i => i.Id == Id).FirstOrDefault();

..包含3个表,可通过ItineraryDays访问,使用以下导航属性进行遍历。

  • ItineraryDay>>公共虚拟列表清单{get; set;}(ItineraryDay.ListingId === Listing.Id)
  • 清单>> public virtual Port Port {get;组; (Listing.PortId === Port.Id)
  • 端口>> public virtual Country Country {get;组; }(Port.CountryId = Country.Id)

问候,盖伊

1 个答案:

答案 0 :(得分:0)

在这种情况下,您必须替换

.Include(i => i.ItineraryDays)

通过

.Include(i => i.ItineraryDays.Listing.Port.Country)

你将获得4。

由于它们是“单一”属性,因此可以解决问题。

修改

哦,作为行程中的ItineraryDays(顺便说一句,可能有猜测)似乎是一个集合,认为你必须这样做

.Include(i => i.ItineraryDays.Select(id => id.Listing.Port.Country))