я следующие таблицы в моей Sql Sever База данных:Flatten мастер/подробно сущность
Tbl_Polygons: PolygonId, PolygonName
Tbl_PolygonPoints: pointId, Fk_PolygonId, Широта, Долгота Я м, используя следующий метод для считывания каждого полигона, затем его точек:
Using context = New myDbEntities()
Dim polygons = (From poly In context.Tbl_Polygons Select Poly).ToList()
polygons.ForEach(Sub(ply)
Dim polyPoint = (From pPoint In Tbl_PolygonPoints Where pPoint.Fk_PolygonId = ply.PolygonId
Select pPoint.Latitude, pPoint.Longitude).ToList()
polyPoint.ForEach(Sub(pPoint)
polygonPoints.Add(New PointLatLng(pPoint.Latitude, pPoint.Longitude))
End Sub)
DrawPolygon(ply,polygonPoints)
polygonPoints.Clear()
End Sub)
End Using
У меня в моем столе около 20000 полигонов. код, упомянутый выше, слишком длинный для полного запуска. Я пытался сгладить свои данные, тогда я могу удалить свой внутренний цикл ForEach. Может ли SelectMany решить мою проблему? если да, то какие-либо предложения приветствуются
большое спасибо
Модель нечеткая, в любом случае вы можете вставить AsNoTracking, Include, а также сгладить с помощью Select для улучшения характеристик. Обычно AsNoTracking и Include достаточно. – bubi
Спасибо за ваш ответ, но добавление AsNoTracking не имеет эффекта маркировки. Я просто хочу читать полигоны из tbl_polygons, тогда его точки с tbl_polygonpoints с linq эффективным способом –