2013-02-05 2 views
1

POCO 엔티티 생성기를 실행할 때 "기본 '네임 스페이스로 스키마가 없습니다"라는 오류가 발생합니다 다른 CSDL 파일에서 네임 스페이스를 가져 오는 CSDL 파일다른 CSDL 파일에서 네임 스페이스를 가져 오는 CSDL 파일로 POCO 엔티티 생성기를 실행할 때 '기본'네임 스페이스와 스키마가 없습니다.

두 CSDL 파일이 모두 프로젝트 폴더 외부의 다른 폴더로 이동되었습니다. 왜냐하면 "Base"CSDL 파일에서 네임 스페이스를 가져 오기 위해 Administracion.csdl 파일을 편집해야했기 때문입니다.

은 "Administracion.csdl"파일은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 
<Schema Namespace="Administracion" Alias="Self" p1:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:p1="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm"> 
    <Using Namespace="Base" Alias="Base" /> 
    <EntityContainer Name="AdministracionEntities" p1:LazyLoadingEnabled="true"> 
    <EntitySet Name="adm_accesoxperfil" EntityType="Administracion.adm_accesoxperfil" /> 
    <EntitySet Name="adm_accesoxusuario" EntityType="Administracion.adm_accesoxusuario" /> 
    <EntitySet Name="adm_accionxnivelseguridadxusuario" EntityType="Administracion.adm_accionxnivelseguridadxusuario" /> 
    <EntitySet Name="adm_alarmaxperiodopresupuesto" EntityType="Administracion.adm_alarmaxperiodopresupuesto" /> 
    <EntitySet Name="adm_categoriapredefinidaxbanner" EntityType="Administracion.adm_categoriapredefinidaxbanner" /> 
    <EntitySet Name="adm_configuraciondetallepresupuesto" EntityType="Administracion.adm_configuraciondetallepresupuesto" /> 
    <EntitySet Name="adm_configuracionperiodopresupuesto" EntityType="Administracion.adm_configuracionperiodopresupuesto" /> 
    <EntitySet Name="adm_confirmacionseguridadoperacion" EntityType="Administracion.adm_confirmacionseguridadoperacion" /> 
    <EntitySet Name="adm_cuenta" EntityType="Base.adm_cuenta" /> 
    <EntitySet Name="adm_cuentaxmetafinanciera" EntityType="Administracion.adm_cuentaxmetafinanciera" /> 

은 내가 대신 프로젝트 폴더에 EDMX 파일을 읽는 편집 한 CSDL 파일을 읽을 수있는 POCO 엔터티 생성기 템플릿을 편집했다.

템플릿의 코드는 다음과 같습니다

Error 1 Running transformation: System.Data.MetadataException: Schema specified is not valid. Errors: 
Administracion.csdl(3,4) : error 0160: No schema encountered with 'Base' namespace. Make sure the namespace is correct or the schema defining the namespace is specified. 
Administracion.csdl(13,6) : error 0034: Unknown namespace or alias (Base). 

내가 잘못 뭐하는 거지 :

string csdl = @"path\Administracion.csdl"; 
var ItemCollection = new EdmItemCollection(csdl); 

나는 다음과 같은 오류를 받고 있어요 템플릿을 실행하는 경우? CSDL 파일이 다른 폴더에 있기 때문입니까? 나는 그들을 어디에 두어야합니까? POCO 엔티티 생성기 템플릿이 CSDL 파일에서 네임 스페이스를 가져올 때 처리 할 수 ​​있습니까?

답변

0

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

, 그것은 다음과 같습니다

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

폴더는 '.'로 구분해야합니다. '/'아닙니다.

메타 데이터의 올바른 형식은 다음과 같습니다 오류 뒤에

res:///DataLayer.myProject.myProject.csdl or res:///DataLayer.myProject.myProject.ssdl or res://*/DataLayer.myProject.myProject.msl

+0

감사합니다 아리엘이, 당신의 의견은이 문제에 대한 해결책을 찾는 데 유용했다. – razp26