Effort.EF6로 공간 DbGeography 공급자 예외 [사용할 수있는 공간 공급자를 찾을 수 없습니다.]

asp.net-mvc c# effort entity-framework-6 spatial

문제

EF6로 응용 프로그램을 개발 중이며 다음과 같이 내 위치에 System.Data.Entity.Spatial.DbGeography를 사용하기로 결정했습니다.

public class Place
{
  public int Id { get; set; }
  public string Name { get; set; }
  public DbGeography Location { get; set; }
} 

테스트를 실행할 때 다음 오류가 발생합니다.

System.NotImplementedException : No usable spatial provider could be found. In order to use the 'DbGeography' or 'DbGeometry' spatial types the EF provider being used must support spatial types and all prerequisites for the provider must be installed.

추신 : 나는 나의 시험을 위해 노력 을 사용하고있다.

어떤 제안이라도 도움이 될 것입니다.


수정 됨 03/04/15 :

노력에 오류가 있습니다. 공간 속성을 지원하지 않습니다. [DbGeography] 문제를 해결할 때 게시 할 해결 방법을 찾고 있습니다.

자세한 정보 : https://effort.codeplex.com/discussions/471666

수락 된 답변

DbGeography와 같은 특별한 속성을 지원하지 않는 노력을 감안할 때 tamasflamich는 다음 과 같이 말합니다.

기존 베타 버전은 지원되지 않으며 (조차 베타 버전이 아님) 곧이 기능에 대한 작업을 곧 시작할 계획이 아닙니다. 죄송합니다.

나는 또한 Highway.Data 를 사용하려고 시도했지만 어느 것도 지원하지 않는다.

이제는 AdvancedQuery, AdvancedCommand 또는 AdvancedScalar를 지원하지도 않으며 지원하지도 않습니다.

내 코드를 살펴보고 상자 안의 위치 만 필요하다는 것을 알았다면 DbGeography 사용을 중단하고 다음과 같이 직접 수행하기로 결정했습니다.

public class Place
{
  public int Id { get; set; }
  public string Name { get; set; }
  public double Lat { get; set; }
  public double Lng { get; set; }
}

대신에:

public IEnumerable<Church> GetInBox(DbGeography boundingBox)
{
  return All().Where(c => c.Location.Intersects(boundingBox));
}

이제 나는 이것을 가지고있다.

public IEnumerable<Church> GetInBox(DbGeography boundingBox)
{
  All().Where(c =>
            c.Lat <= nelt &&
            c.Lat >= swlt &&
            c.Lng <= nelng &&
            c.Lng >= swlng
            );
}

이것은 내 문제를 해결했지만 Effort 및 HighwayFramework가 공간을 지원한다는 점에서 좋을 것입니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.