Business Data Connectivity (BDC) Service 不支持的数据类型

上次修改时间: 2010年9月27日

适用范围: SharePoint Server 2010

本文内容
使用数据库连接器时
使用 .NET 程序集连接器时
使用 Web 服务连接器时
Business Data Connectivity (BDC) Service 的一般限制

本主题列出了 Business Data Connectivity (BDC) Service 不支持的数据类型。

使用数据库连接器时

  1. 不支持以下数据类型:Microsoft SQL Server 2008 中的 HIERARCHYID 和空间数据类型。

  2. SQL Server 2008 数据类型 DATE 和 DATETIME2 将映射到 .NET DateTime。

    1. .NET DateTime 可在以下范围内:1/1/0001(MinValue 的值)至 23:59 12/31/9999(MaxValue 的值)。

    2. 外部列表只允许用户输入 1/1/1900 - 12/31/8900 范围内的 datetime,但 DateTime2 数据类型接受 1/1/0001 至 12/31/9999 范围内的值。不过,给定范围将通过 BDC 对象模型运行,因此可通过使用自定义 Web 部件来解决此问题。

  3. SQL Server 2008 数据类型 TIME 将映射到 .NET Timespan。

    BDC 不支持多个结果集。

使用 .NET 程序集连接器时

在使用 .NET 程序集连接器时,BDC 支持所有 .NET 数据类型。另外,在 BDC 元数据模型中使用自定义类型时,必须在主程序集中完整定义这些类型。

在下例中,XClass 不会运行,因为它依赖从属程序集中已定义的类型;不过,YClass 可以运行。

[Dependent Assembly]
Public MyClass 
{
}
[Primary Assembly]
Public XClass : MyClass
{
}
Public YClass
{
}

使用 Web 服务连接器时

应避免在 Web 服务中使用以下数据类型:

  • DataSet

  • DataTable

不过,如果必须使用它们,请确保包括 LobSystem 元素的以下属性以便它们正确运行。

<Property Name="ReferenceKnownTypes" Type="System.Boolean">true</Property>

以下项不会在 Web 服务中运行:

  • 嵌套的 struct

  • 嵌套的 enum

  • 嵌套类

  • 没有公共无参数构造函数的任何类型

Business Data Connectivity (BDC) Service 的一般限制

  1. BDC 不支持非简单类型的 structs。使用非基元类型的 structs 会导致数据丢失和不一致。不要使用非基元类型的 structs。

  2. BDC 不支持嵌套集合(例如,数组或集合的数组,其中的元素也是集合)。您可以具有这些类型,但不能将这些类型建模为集合。必须使用 IsCollection="false" 解决方法将一个级别建模为结构。

  3. BDC 不支持多维数组。

  4. BDC 不支持 .NET Framework 4 中引入的动态编程。BDC 只适用于 .NET Framework 3.5。不过,您可以使用 DynamicType 类,它以类似方式运行。

  5. BDC 不支持 ICollection 或 IEnumerable 接口表示数据结构中的集合,也不支持泛型 ICollection<T>、IEnumerable<T> 和 IList<T> 接口。所有集合必须实现 IList。这适用于 input 和 inout 参数中的数据结构以及外部项的字段。对于方法实例(例如返回多项的 Finder)的返回类型,我们要求返回值实现 IEnumerable 或 IEnumerator(数据库除外,我们对数据库只支持 IDataReader)。BDC 不支持这些 IEnumerable<T> 和 IEnumerator<T> 的常规版本。例如,对于 Web 服务或 .NET 程序集,Finder 方法可以返回包含客户对象的枚举器;不过,客户对象不能包含可枚举的地址来表示地址列表。另外,对于本段中提到的限制,"BDC 不支持"的含义是:如果只实现不支持的接口,它将不运行;不过,如果实现这些不支持的接口和 BDC 要求的接口,它可以运行。