2009-10-13 9 views
1

J'essaye de créer mon propre fichier xml de définition d'application pour le BDC SharePoint, principalement parce que je veux me familiariser avec les concepts. Mon application utilise une base de données Oracle interne et ne contient qu'une seule entité destinée à extraire un sous-ensemble de colonnes d'une seule table de base de données. L'entité ("Analytical Spectra") contient une seule méthode Finder avec un paramètre d'entrée qui est également utilisé comme filtre.Erreur avec la définition de l'entité BDC SharePoint locale

Voici mon entité:

<Entity EstimatedInstanceCount="0" Name="CHEMREG.CHEMREG_SPECTRA" DefaultDisplayName="Analytical Spectra"> 
    <Identifiers> 
    <Identifier TypeName="System.Decimal" Name="SPECTRA_ID" DefaultDisplayName="SPECTRA_ID" /> 
    </Identifiers> 
    <Methods> 
    <Method Name="GetSpectra"> 
     <Properties> 
     <Property Name="RdbCommandText" Type="System.String">SELECT SPECTRA_ID, 
                    BATCH_ID, 
                    CREATED_BY, 
                    CREATED_DATE, 
                    FILE_NAME, 
                    COMMENTS, 
                    NOTEBOOK_REF, 
                    FINAL, 
                    PDF_PATH, 
                    CHEMIST 
                  FROM CHEMREG.CHEMREG_SPECTRA 
                  WHERE NOTEBOOK_REF LIKE :Notebook_Ref                  
     </Property> 
     <Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property> 
     </Properties> 
     <FilterDescriptors> 
     <FilterDescriptor Type="Wildcard" Name="Notebook Ref" /> 
     </FilterDescriptors> 
     <Parameters> 
     <Parameter Direction="In" Name=":Notebook_Ref"> 
      <TypeDescriptor TypeName="System.String" 
          Name="NOTEBOOK_REF" 
          AssociatedFilter="Notebook Ref"> 
      </TypeDescriptor> 
     </Parameter> 
     <Parameter Direction="Return" Name="CHEMREG_SPECTRA"> 
      <TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="CHEMREG_SPECTRADataReader"> 
      <TypeDescriptors> 
       <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="CHEMREG_SPECTRADataRecord"> 
       <TypeDescriptors> 
        <TypeDescriptor TypeName="System.Decimal" Name="SPECTRA_ID" IdentifierName="SPECTRA_ID" DefaultDisplayName="Spectra ID" /> 
        <TypeDescriptor TypeName="System.String" Name="BATCH_ID" DefaultDisplayName="Batch ID" /> 
        <TypeDescriptor TypeName="System.String" Name="CREATED_BY" DefaultDisplayName="Created By"/> 
        <TypeDescriptor TypeName="System.String" Name="CREATED_DATE" DefaultDisplayName="Created Date" /> 
        <TypeDescriptor TypeName="System.String" Name="FILE_NAME" DefaultDisplayName="File Name" /> 
        <TypeDescriptor TypeName="System.String" Name="COMMENTS" DefaultDisplayName="Comments" /> 
        <TypeDescriptor TypeName="System.String" Name="NOTEBOOK_REF" AssociatedFilter="Notebook Ref" DefaultDisplayName="Notebook Ref" /> 
        <TypeDescriptor TypeName="System.Decimal" Name="FINAL" DefaultDisplayName="Final" /> 
        <TypeDescriptor TypeName="System.String" Name="PDF_PATH" DefaultDisplayName="PDF Path" /> 
        <TypeDescriptor TypeName="System.String" Name="CHEMIST" DefaultDisplayName="Chemist" /> 
       </TypeDescriptors> 
       </TypeDescriptor> 
      </TypeDescriptors> 
      </TypeDescriptor> 
     </Parameter> 
     </Parameters> 
     <MethodInstances> 
     <MethodInstance Name="CHEMREG_SPECTRAFinder" Type="Finder" ReturnParameterName="CHEMREG_SPECTRA" ReturnTypeDescriptorName="CHEMREG_SPECTRADataReader" ReturnTypeDescriptorLevel="0" /> 
     </MethodInstances> 
    </Method> 
    </Methods> 
</Entity> 

Mon application peut être téléchargée dans la BDC très bien (avec l'avertissement qui n'a pas pu être trouvé le SpecificFinder, mais je ne pense pas que c'était une grosse affaire ici ... est-ce?). Lorsque j'ajoute une liste de données d'entreprise WebPart à une page et choisir mon entité « Spectra analytique » pour l'affichage, je reçois une erreur dans l'interface utilisateur qui dit:

Une erreur est survenue lors de la récupération des données d'analyse Spectra. Administrateurs, consultez le journal du serveur pour plus d'informations.

Le journal du serveur contient ces informations, que je trouve déroutant:

Erreur lors de l'instanciation Type de filtre: Microsoft.Office.Server.ApplicationRegistry.Runtime.WildcardFilter ... Exception interne 1: System.Reflection.TargetInvocationException: Une exception a été émise par la cible d'un appel. ---> System.InvalidOperationException: ne peut pas créer une instance par défaut sur un paramètre avec DirectionType « Out », « Retour » ou « SQLRETURN »

Je suis confus par cela parce qu'il semble se plaindre d'un filtre sur mon paramètre return, et je n'ai pas défini de filtre sur mon paramètre de retour. Qu'est-ce que je bousille?

Répondre

1

Ah, ha. Le problème était cette entrée dans la définition de type de retour:

<TypeDescriptor TypeName="System.String" 
       Name="NOTEBOOK_REF" 
       AssociatedFilter="Notebook Ref" 
       DefaultDisplayName="Notebook Ref" /> 

La définition de type de sortie ne doit pas faire référence à un filtre. Le descripteur de type doit à la place avoir été:

<TypeDescriptor TypeName="System.String" 
       Name="NOTEBOOK_REF" 
       DefaultDisplayName="Notebook Ref" /> 

Fonctionne comme un charme après avoir effectué ce changement.

Questions connexes