Types de données non pris en charge par le service Business Data Connectivity (BDC)
Dernière modification : lundi 27 septembre 2010
S’applique à : SharePoint Server 2010
Dans cet article
Lors de l’utilisation du connecteur de base de données
Lors de l’utilisation du connecteur d’assembly .NET
Lors de l’utilisation du connecteur de service Web
Restrictions générales concernant le service BDC (Business Data Connectivity)
Cette rubrique répertorie les types de données non pris en charge par le Service BDC (Business Data Connectivity).
Lors de l’utilisation du connecteur de base de données
Les types de données suivants ne sont pas pris en charge : HIERARCHYID et types de données spatiales dans Microsoft SQL Server 2008.
Les types de données SQL Server 2008, DATE et DATETIME2 sont mappés au paramètre .NET DateTime.
La valeur du paramètre .NET DateTime est comprise entre 1/1/0001 (valeur MinValue) et 23:59 12/31/9999 (valeur MaxValue).
Les listes externes autorisent l’utilisateur à entrer la valeur datetime uniquement si elle est comprise dans la plage 1/1/1900 à 12/31/8900, même si le type de données DateTime2 accepte les valeurs comprises entre 1/1/0001 et 12/31/9999. Cependant, les plages données fonctionnent dans le modèle objet BDC et vous pouvez par conséquent contourner le problème en utilisant des composants WebPart personnalisés.
Le type de données SQL Server 2008 TIME est mappé au paramètre .NET Timespan.
BDC ne prend pas en charge plusieurs jeux de résultats.
Lors de l’utilisation du connecteur d’assembly .NET
BDC prend en charge tous les types de données .NET lors de l’utilisation du connecteur d’assembly .NET. En outre, lors de l’utilisation de types personnalisés dans le modèle de métadonnées BDC, les types doivent être entièrement définis dans l’assembly principal.
Dans l’exemple suivant, XClass ne fonctionne pas, car il dépend d’un type qui a été défini dans un assembly dépendant. En revanche, YClass fonctionne.
[Dependent Assembly]
Public MyClass
{
}
[Primary Assembly]
Public XClass : MyClass
{
}
Public YClass
{
}
Lors de l’utilisation du connecteur de service Web
Dans un service Web, évitez d’utiliser les éléments suivants :
DataSet
DataTable
Toutefois, si vous devez les utiliser, veillez à inclure la propriété suivante dans l’élément LobSystem pour qu’ils fonctionnent correctement.
<Property Name="ReferenceKnownTypes" Type="System.Boolean">true</Property>
Les éléments suivants ne fonctionnent pas dans un service Web :
struct imbriqués
enum imbriqués
Classes imbriquées
Types ne disposant pas d’un constructeur sans paramètre public
Restrictions générales concernant le service BDC (Business Data Connectivity)
BDC ne prend pas en charge les structs qui ne sont pas des types simples. L’utilisation de structs non primitifs provoque des pertes de données et des incohérences. N’utilisez pas de structs non primitifs.
BDC ne prend pas en charge les collections imbriquées (par exemple des tableaux de tableaux ou des collections dont les éléments sont également des collections). Vous pouvez utiliser ces types, mais vous ne pouvez pas les modéliser sous forme de collections. Un des niveaux doit être modélisé sous forme de structure en utilisant la solution IsCollection="false".
BDC ne prend pas en charge les tableaux multidimensionnels.
BDC ne prend pas en charge la programmation dynamique introduite dans .NET Framework 4. BDC fonctionne uniquement avec .NET Framework 3.5. Cependant, vous pouvez utiliser la classe DynamicType, qui fonctionne de la même manière.
BDC ne prend pas en charge les interfaces ICollection et IEnumerable pour représenter des collections dans les structures de données, ni les interfaces génériques ICollection<T>, IEnumerable<T> et IList<T>. Toutes les collections doivent implémenter IList. Cette restriction s’applique aux structures de données des paramètres d’entrée et de sortie, ainsi que les champs d’éléments externes. Pour les types de retour des instances de méthode, par exemple un Finder renvoyant plusieurs éléments, la valeur de retour doit implémenter IEnumerable ou IEnumerator (sauf dans le cas d’une base de données, où seule l’interface IDataReader est prise en charge). BDC ne prend pas en charge les versions génériques des interfaces IEnumerable<T> et IEnumerator<T>. Ainsi, par exemple, dans le cas d’un service Web ou d’un assembly .NET, la méthode Finder peut renvoyer un énumérateur contenant des objets Customer. Cependant, l’objet Customer ne doit pas contenir un énumérable d’adresses pour représenter la liste des adresses. Dans le cadre des restrictions mentionnées dans ce paragraphe, l’expression « BDC ne prend pas en charge » signifie que votre solution ne fonctionnera pas si vous implémentez uniquement les interfaces non prises en charge. Cependant, elle fonctionnera si vous implémentez ces interfaces non prises en charge aux côtés de celles requises par BDC.