내 SQL을 끊어 데이터베이스에서 다음 표했다 :펼치기 마스터/세부 엔티티
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 with flatten을 사용하여 퍼포먼스를 향상시킬 수 있습니다. 일반적으로 AsNoTracking 및 Include이면 충분합니다. – bubi
응답 해 주셔서 고맙겠 습니다만 AsNoTracking을 추가하면 마킹 효과가 없습니다. 난 그냥 tbl_polygons에서 다각형 읽기 다음 효과적인 방법으로 linq와 tbl_polygonpoints에서 자사의 포인트 –