2012-04-19 2 views
4

내 * .csdl에서 "Using"요소를 사용하여 다른 네임 스페이스를 가져오고 POCO를 사용하여 개체를 변환하고 싶습니다. 내가 템플릿을 사용하지만 때알 수없는 네임 스페이스로 인해 "using"키워드로 변환을 실행하지 못했습니다.

<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" 
      xmlns:cg="http://schemas.microsoft.com/ado/2006/04/codegeneration" 
      xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" 
      Namespace="BooksModel" Alias="Self"> 

    <Using Namespace="BooksModel.Extended" Alias="BMExt" /> 

    <EntityContainer Name="BooksContainer" > 
     <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" /> 
    </EntityContainer> 

    <EntityType Name="Publisher"> 
     <Key> 
     <PropertyRef Name="Id" /> 
     </Key> 
     <Property Type="Int32" Name="Id" Nullable="false" /> 
     <Property Type="String" Name="Name" Nullable="false" /> 
     <Property Type="BMExt.Address" Name="Address" Nullable="false" /> 
    </EntityType> 

</Schema> 

(http://msdn.microsoft.com/en-us/library/bb738545.aspx)

을 :

나는 CSDL은 다음과 같습니다 사용 내 CSDL 변환하기 위해 (POCO)는 실행 도구 변환 오류가 발생 :

실행 변환 : 'BooksModel.Extended'네임 스페이스가 발생 없음 스키마를. 네임 스페이스가 올바른지 또는 네임 스페이스를 정의하는 스키마가 지정되었는지 확인하십시오.

변환 실행 중 : 알 수없는 네임 스페이스 또는 별칭 (BooksModel.Extended).

나는이처럼 내 CSDL를로드

var inputFile = @"CSDL_NAME.csdl"; 
var ItemCollection = loader.CreateEdmItemCollection(inputFile); 

어떻게 알 수없는 네임 스페이스를 포함하기 위해 템플릿을 수정할 수 있습니다?

답변

2

오류 뒤에있는 문제는 다른 CSDL 파일을 EdmItemCollection에로드하지 않는 것입니다. 해결책은 필요한 CSDL 파일 (가져온 네임 스페이스가있는 파일 포함)의 경로가있는 String []을 EdmItemCollection에로드하는 것입니다. 코드에서

, 그것은 다음과 같습니다

List<string> lstCsdlPaths = new List<string>(); 
lstCsdlPaths.Add(@"path\CSDLBase.csdl"); 
lstCsdlPaths.Add(@"path\CSDLImports.csdl"); 
var ItemCollection = new EdmItemCollection(lstCsdlPaths.ToArray());