2012-02-08 3 views
1

sqlgeography를 사용하는 엔티티/테이블이 있습니다.Entity 부분 클래스의 속성

EF 4.X는 공간 유형을 지원하지 않으므로 필자는 필드의 바이트를 앞뒤로 전송합니다.

저는 해당 작업을 수행하기 위해 코드 측면에서 converstion과 속성을 처리하는 데이터베이스 측에 procs를 저장했습니다.

코드에 속성을 추가하려면 부분 클래스를 사용했습니다.

이러한 속성 중 하나는 가져 오기 및 설정을 처리하기 위해 byte [] 속성을 단순히 감싸는 SqlGeography에 대한 속성 중 하나입니다.

이 속성은 NotMappedAttribute를 사용하여 EF에서 숨겨집니다.

다른 하나는 byte [] 자체를 노출하는 속성이며 EdmScalarPropertyAttribute 및 DataMemberAttribute로 장식되어 있습니다.

그런 다음 EF 모델 디자이너 (* .edmx)로 이동하여 삽입/업데이트/삭제 저장된 procs에서 엔터티 모델을 가리 킵니다.

저장된 procs를 찾은 다음 적절한 경우 VARBINARY 매개 변수를 사용한다는 것을 알게됩니다.

또한 해당 매개 변수에 매핑되는 엔터티 클래스의 속성을 선택할 수있는 드롭 다운이 있습니다.

그러나이 드롭 다운 목록에는 내 속성이 표시되지 않습니다. Eql에서 숨겨지기 때문에 SqlGeography 속성에 대해서는 신경 쓰지 않습니다. 그러나 데이터가있는 곳에서 byte [] 속성을 가리킬 수 있어야합니다.

저는 데이터베이스 트리거 나 래퍼 클래스와 addiitonal 필드가 작업을 퍼지하기를 피하고 싶습니다.

수동으로 .edmx 파일을 편집하여 바이트 [] 속성을 포함 시키려고 시도했지만 매핑되지 않았다는 불만이 있습니다.

누구나 내게이 기능을 작동시키는 방법에 대한 통찰력을 줄 수 있습니까? 또는 최종 결과에 대한 대안 방법?

답변

1

우리는 뷰를 사용하여 우리를위한 이진 필드를 만들 수 있지만 데이터 내 관계에 대한 XML을 수동으로 많이 만듭니다.

이것은 삶을 간단하고 쉽게 만드는 EF 사용의 요점을 무효로 만듭니다.

이 프로젝트에서는 테이블에 바이너리 필드를 추가 한 다음 서버에서의 변환을 처리하는 sprocs와 모델의 지리 유형을 표시하는 부분 엔터티 클래스의 속성을 추가합니다.

다음 프로젝트 나는 EF를 사용할 것으로 의심합니다. Dapper는 더 많은 고통을 줄 수 있습니다.결국 http://smehrozalam.wordpress.com/2009/08/12/entity-framework-creating-a-model-using-views-instead-of-tables/