2008-10-16 4 views
1

나는 SQL Express 2008 및 vs2008을 사용하여 C#으로 작성했습니다.엔티티 프레임 워크/nhibernate와 sql2008 지리 데이터 유형

Geography 열이있는 db 테이블이 있는데 수집 한 GPS 데이터를 넣어야합니다. 이 테이블에 대한 Entity-Framework 매핑을 만들려고 시도했을 때 그러한 열 유형을 매핑 할 수 없다는 경고와 함께 열을 무시했습니다. 그런 다음 nHibernate.Spatial 프로젝트를 살펴 보았지만 지리가 아닌 지오메트리 유형 만 변환하는 것처럼 보입니다. 운이 없다. Geography를 VarBinary로 캐스팅 할 때 뷰를 사용할 수 있다고 말했고 생성 된 엔터티 클래스에서 이진수를 deserialize하는 다른 Property를 Geography로 다시 추가합니다. db에서 데이터를 읽는 데 작동 할 것 같아요.하지만 db에 해당 행을 삽입해야하며 뷰에 행을 추가 할 수 없습니다. 내 C# 코드에서 내 데이터베이스에서 지리 데이터를 쉽게 읽고 쓸 수있는 다른 트릭이 있습니까?

+0

NHibernate를 사용하면 더 나은 매핑을 위해 [NHibernate.Spatial] (http://nhforge.org/wikis/spatial/introduction.aspx)을 사용할 수 있습니다. –

+0

내가 볼 수있는 NHiberate.Spatial은 아직 지오메트리 타입 만 지원합니다. –

답변

1

나는 EF에 대해 많이 모른다. 그러나 NHibernate는 IUserType을 사용하여 그것의 타입 프레임 워크를 확장 할 수있게 해준다. Ray Houston's Blog에 대해 조금 있습니다.

내가 성공적으로 엔티티 프레임 워크 V1은 SQL의 UDT 지원하지 않습니다이 때 Ayende's example

0

에 기반하여 XML 필드에 XmlSerialization를 사용에 대한 유형을 생성하기 위해 사용했습니다 - 2008 공간적 유형은 UDT입니다.

WKB (byte []/varbinary)를 사용하여 long/lat 데이터를 저장할 수 있습니다.

보조 노트로 다음 버전 (1.5 CTP)에 대한 Microsoft MIX09 중에 UDT에 대한 지원을 전혀 알지 못했습니다. 아마도 나는 뭔가를 놓쳤다.