2012-07-23 3 views
0

EDMX 파일에서 POCO를 생성하는 T4 템플릿을 사용하고 있습니다.EDMX 파일의 스키마 XML 특성 문제

모든 기본 엔터티에는 고유 한 스키마가 있습니다. That answer은 당신이 EDMX에서 스키마 이름을 추출 할 수있는 방법에 대해 설명합니다 :

<EntitySet Name="Table_1" 
      EntityType="TestModel.Store.Table_1" 
      store:Type="Tables" 
      Schema="Blubb" /> 
: 내가 EDMX 파일의 내용을 보면

StoreItemCollection sic; 
loader.TryCreateStoreItemCollection(inputFile, out sic); 
EntityContainer sicEntityContainer = sic.GetItems<EntityContainer>().First(); 

EntitySet eset = sicEntityContainer.GetEntitySetByName(code.Escape(entity), true); 
string schemaName = eset.MetadataProperties["Schema"].Value.ToString(); 

, 나는 각 엔티티에 대한 스키마 속성이 있음을 알 수

이 시점에서 아무 문제없이 작동하고 스키마 이름을 추출 할 수 있습니다. 하나 이개월 비주얼 스튜디오 2010 내 모델에서 새로운 엔티티의 스키마 속성에 접두사라고 저장을 추가

이후 : 여기

문제입니다.

<EntitySet Name="Table_1" 
      EntityType="TestModel.Store.Table_1" 
      store:Type="Tables" 
      store:Schema="Blubb" /> 

그래서 링크 된 아티클의 논리를 사용하여 스키마를 추출 할 수 없습니다.

텍스트 편집기를 사용하여이 접두사를 수동으로 제거해야하므로 아무 문제없이 잘 작동합니다.

내 질문 :

  1. 그 이유는 무엇입니까?
  2. 저장소와 같은 네임 스페이스가있는 특성을 어떻게 읽을 수 있습니까? 스키마?

답변

1

당신은 네임 스페이스로 "유형/스키마"접두사 필요

예 :

eset.MetadataProperties["http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator:Type"].Value.ToString(); 
eset.MetadataProperties["http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator:Schema"].Value.ToString(); 
+0

"store : Schema"에 대해 "EntityStoreSchemaGenerator : Schema"를 의미합니까? –

+0

@ MarcelJ.Kloubert 예 - 편집 – podiluska

+0

을 참조하십시오. 많이 thx : D 조 –

0

확실하지 않음이 도움이 될 것입니다하지만, http://brewdawg.github.io/Tiraggo.Edmx/를 볼 수 있습니다 당신은에서 설치할 수있는 경우 NuGet. 모든 매핑, 칼럼 당 낮은 수준의 SQL 데이터 유형, 모든 종류의 물건, 페이지의 샘플을 보면 edmx 파일의 메타 데이터를 모두 제공하므로 쉽게 볼 수 있습니다.

관련 문제