自制SharePoint BDC实体定义出错
我正在尝试为SharePoint BDC创建自己的应用程序定义xml文件,主要是因为我想更加熟悉这些概念。我的应用程序使用一个内部Oracle数据库,它只包含一个实体,用于从单个数据库表中检索列的子集。实体(“分析光谱”)仅包含一个Finder方法和一个输入参数,该参数也用作过滤器 这是我的实体:自制SharePoint BDC实体定义出错,sharepoint,bdc,Sharepoint,Bdc,我正在尝试为SharePoint BDC创建自己的应用程序定义xml文件,主要是因为我想更加熟悉这些概念。我的应用程序使用一个内部Oracle数据库,它只包含一个实体,用于从单个数据库表中检索列的子集。实体(“分析光谱”)仅包含一个Finder方法和一个输入参数,该参数也用作过滤器 这是我的实体: <Entity EstimatedInstanceCount="0" Name="CHEMREG.CHEMREG_SPECTRA" DefaultDisplayName="Analytical
<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>
选择您的ID,
批次号,
创建于,
创建日期,
文件名,
评论,
笔记本(参考),
最终的
PDF_路径,
化学家
来自CHEMREG.CHEMREG_光谱
笔记本的位置类似于:笔记本
正文
我的应用程序可以上传到BDC中(警告说找不到SpecificFinder,但我不认为这有什么大不了的……是吗?)。当我将业务数据列表Web部件添加到页面并选择要显示的“分析光谱”实体时,UI中会出现一个错误,显示:
从分析光谱检索数据时出错。管理员,有关详细信息,请参阅服务器日志
服务器日志包含以下信息,我发现这些信息令人困惑:
实例化筛选器类型时出错:Microsoft.Office.Server.ApplicationRegistry.Runtime.WildcardFilter
...
内部异常1:
System.Reflection.TargetInvocationException:调用的目标已引发异常。-->System.InvalidOperationException:无法在DirectionType为“Out”、“Return”或“SqlReturn”的参数上创建默认实例
我对此感到困惑,因为它似乎在抱怨我的返回参数上有一个过滤器,而我还没有在我的返回参数上定义一个过滤器。我搞砸了什么?啊,哈。问题在于返回类型定义中的此条目:
<TypeDescriptor TypeName="System.String"
Name="NOTEBOOK_REF"
AssociatedFilter="Notebook Ref"
DefaultDisplayName="Notebook Ref" />
输出类型定义不应引用筛选器。类型描述符应改为:
<TypeDescriptor TypeName="System.String"
Name="NOTEBOOK_REF"
DefaultDisplayName="Notebook Ref" />
做了那个改变后,效果很好。啊,哈。问题在于返回类型定义中的此条目:
<TypeDescriptor TypeName="System.String"
Name="NOTEBOOK_REF"
AssociatedFilter="Notebook Ref"
DefaultDisplayName="Notebook Ref" />
输出类型定义不应引用筛选器。类型描述符应改为:
<TypeDescriptor TypeName="System.String"
Name="NOTEBOOK_REF"
DefaultDisplayName="Notebook Ref" />
做了那个改变后,它就像一个符咒