2009-10-13 81 views
1

我試圖爲SharePoint BDC創建我自己的應用程序定義xml文件,主要是因爲我想更加熟悉這些概念。我的應用程序使用內部的Oracle數據庫,並且它只包含一個實體,該實體僅用於從單個數據庫表中檢索列的子集。實體(「分析光譜」)只包含一個Finder方法,其中一個輸入參數也用作過濾器。本土SharePoint的BDC實體定義錯誤

這裏是我的實體:

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

我的應用程序可以被上傳到BDC就好了(與該SpecificFinder找不到的警告,但我不認爲這是什麼大不了的事在這裏... 是嗎?)。當我添加一個業務數據列表Web部件添加到頁面,並選擇我的顯示器「分析光譜」的實體,我得到一個錯誤,指出用戶界面:在從分析光譜獲取數據發生

錯誤。管理員,請參閱服務器日誌以獲取更多信息。

服務器日誌包含此信息,我覺得困惑:

錯誤在實例過濾器類型:Microsoft.Office.Server.ApplicationRegistry.Runtime.WildcardFilter ... 內部異常1: System.Reflection.TargetInvocationException:調用的目標引發了異常。 ---> System.InvalidOperationException:無法與DirectionType「出」一個參數創建默認情況下,「返回」或「SQLRETURN」

我爲此感到困惑,因爲它似乎是在抱怨上的過濾器我返回參數,我沒有在我的返回參數上定義過濾器。我在搞什麼?

回答

1

啊,哈。問題出在返回類型定義中:

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

輸出類型定義不應引用過濾器。類型描述符應該是:

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

在做出更改後,它就像魅力一樣。