【问题标题】:Error with home-grown SharePoint BDC entity definition本地 SharePoint BDC 实体定义错误
【发布时间】:2009-10-14 06:23:39
【问题描述】:

我正在尝试为 SharePoint BDC 创建自己的应用程序定义 xml 文件,主要是因为我想更加熟悉这些概念。我的应用程序使用内部 Oracle 数据库,它只包含一个实体,该实体旨在仅从单个数据库表中检索列的子集。实体(“Analytical Spectra”)仅包含一个 Finder 方法和一个输入参数,该参数也用作过滤器。

这是我的实体:

<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 部件添加到页面并选择“分析光谱”实体进行显示时,我在 UI 中收到错误消息:

从 Analytical Spectra 检索数据时出错。管理员,请参阅服务器日志了解更多信息。

服务器日志包含这些信息,我觉得很困惑:

实例化过滤器类型时出错:Microsoft.Office.Server.ApplicationRegistry.Runtime.WildcardFilter ... 内部异常1: System.Reflection.TargetInvocationException:调用的目标已引发异常。 ---> System.InvalidOperationException: 无法在具有 DirectionType 'Out'、'Return' 或 'SqlReturn' 的参数上创建默认实例

我对此感到困惑,因为它似乎在抱怨我的返回参数上有一个过滤器,而我还没有在我的返回参数上定义一个过滤器。我在搞什么鬼?

【问题讨论】:

    标签: sharepoint bdc


    【解决方案1】:

    啊,哈。问题是返回类型定义中的这个条目:

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

    输出类型定义不应引用过滤器。类型描述符应该是:

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

    做出改变后就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 1970-01-01
      • 2011-09-09
      • 2011-06-17
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      相关资源
      最近更新 更多