1

別のCSDLファイルから名前空間をインポートするCSDLファイルでPOCOエンティティジェネレーターを実行すると、「「Base」名前空間でスキーマが見つかりません」というエラーが発生します。

両方のCSDLファイルは、プロジェクトフォルダー外の別のフォルダーに移動されました。これは、Administracion.csdlファイルを編集して、「ベース」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エンティティジェネレーターテンプレートを編集しました。

テンプレートのコードは次のようになります。

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

テンプレートを実行すると、次のエラーが発生します。

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). 

私は何が間違っているのですか?CSDLファイルが別のフォルダにあるためですか?それらをどこに配置する必要がありますか?POCOエンティティジェネレータテンプレートは、CSDLファイルの名前空間のインポートを処理できますか?

4

2 に答える 2

0

フォルダは「。」で区切る必要があります。いいえ '/'。

メタデータの正しい形式は次のとおりです。

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

于 2013-02-05T18:05:24.350 に答える
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()); 
于 2013-02-06T19:12:15.017 に答える