부터 System.Data.Entity.SqlServer.SqlSpatialFunctions
클래스 정의 :Linq를 사용하지 않고 SqlSpatialFunctions를 사용하는 방법이 있습니까?
Linq의 SqlServer 메서드를 엔터티에 표시하는 함수 스텁이 들어 있습니다.
Linq가 Entities에 구체적으로 언급 된 것을 알고 있지만 일부 기능을 백 엔드 코드에 복제 할 수 있는지 궁금합니다.
계정 모델이 있습니다. 게으른로드 된 다각형 컬렉션이 있습니다. 각 다각형에는 위치라는 DbGeography 유형 속성이 있습니다.
특정 점 (또한 위치라고 불리는 DbGeography 유형 속성이있는 지연로드 속성 주소가 있음)과 상호 작용하는 모든 다각형을 얻으려고합니다.
나는 이런 식으로 작업을 수행 할 수 있습니다 잘 작동
var matchedPolygons =
account.Polygons.Where(
x =>
point.Address.Location.Intersects(x.Polygon.Location)).ToList();
합니다.
성능 향상을 위해 폴리곤 데이터를 약간 줄이는 것이 좋습니다.
이 기능은 엔티티에 LINQ에서 호출 할 수 있습니다 :
var matchedPolygons =
account.Polygons.Where(
x =>
point.Address.Location.Intersects(SqlSpatialFunctions.Reduce(x.Polygon.Location, 100))).ToList();
이 그러나 다음 System.NotSupportedException 예외가 발생합니다.
은 내가이 (가) 위의 방법을 절감하여 내 저장소 계층에서 직접 다각형을 검색 할 수 있습니다 알고 있지만, 내가 게으른 로딩을 사용하고 있기 때문에 이미 나에게 가능한 다각형의 컬렉션이, 내가 사용하는 방법이 될 줄 알았는데 이 단계에서 SqlSpatialFunctions.