Entity Framework никогда не материализует частично завершенный экземпляр. Другими словами, вы не можете материализовать Локацию только с некоторыми ее дочерними локациями. Это будет «неполный» объект, и Entity Framework не допускает этого.
Однако есть обходные пути. Если вам нужна информация только из ChildLocations, а не из самого Location, просто выберите это:
from Locations in this.LocationDataContext.Locations
where Locations.LocationType.ID == 3
from ChildLocation in Locations
where ChildLocation.LocationType.ID == 2
select ChildLocation;
В этом случае, поскольку мы выбираем только дочерние расположения, можно выбрать только несколько из них, поскольку они могут быть полностью материализованы. Только при материализации Места нам нужно всех детей.
Другим обходным решением является материализация частичной информации о местоположении в анонимный тип. Это позволяет вам получать информацию как о местоположении, так и о некоторых дочерних локаций, не нарушая правила о том, что экземпляры могут быть материализованы только в их полной форме. Поскольку вы на самом деле не материализуете реальное Место, нет необходимости материализовать все это:
from Locations in this.LocationDataContext.Locations
where Locations.LocationType.ID == 3
select new
{
ID = Locations.ID,
LocationType= Locations.LocationType
ChildLocations = from ChildLocation in Locations
where ChildLocation.LocationType.ID == 2
select ChildLocation
}