Tipos de datos no compatibles con el servicio Conectividad a datos empresariales (BDC)

Última modificación: lunes, 27 de septiembre de 2010

Hace referencia a: SharePoint Server 2010

En este artículo
Cuando se usa el conector de bases de datos
Cuando se usa el Conector de ensamblado .NET
Cuando se usa el conector de servicio web
Restricciones generales del servicio Conectividad a datos empresariales (BDC)

En este tema se enumeran los tipos de datos que el Servicio de conectividad de datos profesionales (BDC) no admite.

Cuando se usa el conector de bases de datos

  1. No se admiten los siguientes tipos de datos: HIERARCHYID y tipos de datos espaciales en Microsoft SQL Server 2008.

  2. Los tipos de datos de SQL Server 2008, DATE y DATETIME2, se asignarán a DateTime de .NET.

    1. DateTime de .NET puede estar comprendido entre: 1/1/0001 (el valor de MinValue) y 23:59 de 31/12/9999 (el valor de MaxValue).

    2. Las listas externas permiten al usuario especificar el valor de datetime únicamente en el intervalo 1/1/1900 - 31/12/8900, aunque el tipo de datos DateTime2 acepte valores en el intervalo 1/1/0001 a 31/12/9999. Sin embargo, los intervalos especificados funcionarán en modelo de objetos de BDC, por lo que esto se puede solucionar usando elementos web personalizados.

  3. El valor TIME del tipo de datos de SQL Server 2008 se asignará a Timespan de .NET.

    BDC no admite varios conjuntos de resultados.

Cuando se usa el Conector de ensamblado .NET

BDC admite todos los tipos de datos de .NET cuando se usa el Conector de ensamblado .NET. Además, al usar tipos personalizados en el modelo de metadatos de BDC, los tipos deben definirse por completo en el ensamblado principal.

En el siguiente ejemplo, XClass no funcionará porque depende de un tipo definido en un ensamblado dependiente; sin embargo, YClass sí funcionará.

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

Cuando se usa el conector de servicio web

Debe evitar lo siguiente en un servicio web:

  • DataSet

  • DataTable

Sin embargo, si debe usarlos, asegúrese de incluir la siguiente propiedad en el elemento LobSystem para que funcionen correctamente.

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

Los siguientes elementos no funcionarán en un servicio web:

  • struct anidado

  • enum anidado

  • Clases anidadas

  • Cualquier tipo que no tenga un constructor público sin parámetros

Restricciones generales del servicio Conectividad a datos empresariales (BDC)

  1. BDC no admite structs que no sean tipos simples. El uso de structs no primitivos ocasionará pérdidas de datos e incoherencias. No use structs no primitivos.

  2. BDC no admite colecciones anidadas (por ejemplo, la matriz de matrices o colecciones, cuyos elementos también son colecciones). Puede tener estos tipos, pero no puede modelar estos tipos como colecciones. Uno de los niveles se debe modelar como estructura con la solución alternativa IsCollection="false".

  3. BDC no admite matrices multidimensionales.

  4. BDC no admite la programación dinámica que se incluyó en .NET Framework 4. BDC funciona únicamente con .NET Framework 3.5. Sin embargo, se puede usar la clase DynamicType, que funciona de manera similar.

  5. BDC no admite las interfaces ICollection o IEnumerable para representar colecciones en estructuras de datos, así como las interfaces genéricas ICollection<T>, IEnumerable<T> y IList<T>. Todas las colecciones deben implementar IList. Esto se aplica a las estructuras de datos en parámetros input e inout, así como a los campos de los elementos externos. Para los tipos devueltos de las instancias de método, como un Finder que devuelve varios elementos, se requiere el valor devuelto para implementar IEnumerable o IEnumerator (excepto la base de datos, donde solo se admite IDataReader). BDC no admite versiones genéricas de IEnumerable<T> y IEnumerator<T>. Así, por ejemplo, en el caso de un servicio web o ensamblado .NET, el método Finder puede devolver un enumerador que contiene objetos de cliente; sin embargo, el objeto de cliente no puede contener un enumerable de direcciones que represente la lista de direcciones. Además, en el caso de las restricciones mencionadas en este párrafo, "BDC no admite" significa: no funcionará si solo se implementan las interfaces no compatibles; sin embargo, funcionará si se implementan esas interfaces no compatibles y las que BDC requiere.