TypeDescriptor
Tous les objets Parameter ont un objet TypeDescriptor qui définit le type de données du paramètre. C'est l'objet de métadonnées le plus complexe, qui est de structure hiérarchique et décrit de manière récursive une structure de données abstraite fondée sur des types primitifs. De plus, chaque nœud de feuille de l'arborescence TypeDescriptor pointe vers un ensemble de valeurs par défaut possibles spécifié par l'objet MethodInstance. Ainsi, pour un objet MethodInstance et un paramètre donnés, l'objet TypeDescriptor du paramètre permet d'instancier une valeur par défaut pour ce paramètre.
TypeDescriptors in Input Parameters
L'attribut IdentifierName d'un TypeDescriptor en entrée demande au catalogue de données métiers d'insérer la valeur d'identificateur de l'instance d'entité pertinente avant d'exécuter la méthode. Par exemple, si cela fait partie d'une MethodInstanceSpecificFinder, l'utilisateur a probablement fourni la valeur d'identificateur pour l'instance d'entité qu'il souhaite récupérer. Le catalogue de données métiers insère la valeur dans cet espace après l'instanciation complète de ce paramètre en utilisant toutes les valeurs par défaut.
L'attribut AssociatedFilter d'un objet TypeDescriptor en entrée demande au catalogue de données métiers d'insérer la valeur fournie par l'utilisateur ou le système après l'instanciation du paramètre et avant l'exécution de la méthode. Par exemple, pour une MethodInstanceFinder, l'utilisateur a fourni des valeurs pour tout ou partie des filtres associés à la méthode. Elles sont insérées dans les espaces balisés avant l'exécution de la méthode.
TypeDescriptors in Return Parameters
Pour les systèmes de base de données, l'objet TypeDescriptor racine du paramètre de retour a toujours l'indicateur IsCollection défini. Cela est dû au fait que tout ce qui provient d'une base de données est un flux d'enregistrements quel que soit le contexte sémantique, autrement dit si un enregistrement unique (SpecificFinder/ViewAccessor) ou plusieurs enregistrements (Finder) sont prévus.
Les systèmes de base de données sont modelés en tant que flux d'enregistrements. En conséquence, l'objet TypeDescriptor racine est un flux et l'objet TypeDescriptor de niveau suivant est un enregistrement. Même si un enregistrement est une collection de colonnes, l'indicateur IsCollection n'est pas défini car nous souhaitons que le catalogue de données métiers le traite comme une structure de champs fortement typés.
Dans les systèmes de services Web, utilisez l'indicateur IsCollection sur un objet TypeDescriptor de retour pour indiquer l'emplacement des collections dans le paramètre de retour. Prenons par exemple un objet WebMethod qui renvoie des collections de clients, où chaque client contient une collection d'adresses. Dans cet exemple, l'indicateur doit être défini à deux reprises, une fois au niveau de l'élément Customer[] racine et à nouveau au niveau Customer[0].Address[]. Toutefois, une collection TypeDescriptor ne peut avoir qu'un seul objet TypeDescriptor enfant sous elle, représentant la structure de la collection.
Les objets TypeDescriptor du paramètre de retour représentent les éléments Field de l'interface IEntityInstance créés par le catalogue de données métiers et renvoyés à l'utilisateur pour l'affichage ou la manipulation. L'interface IEntityInstance fournit un mécanisme d'accès abstrait pour les champs et les valeurs d'identificateur de l'instance. Étant donné que les valeurs d'identificateur sont promues dans l'interface IEntityInstance pour l'accès direct, vous devez identifier l'objet TypeDescriptor qui fournit réellement ces valeurs. Pour cela, balisez l'objet TypeDescriptor de sortie/retour avec l'attribut IdentifierName.
TypeDescriptors in Associations
Un objet AssociationMethodInstance contient des emplacements en entrée pour les valeurs d'identificateur de l'instance d'entité source et un emplacement en sortie pour les valeurs d'identificateur des instances d'entité de destination. Vous devez donc baliser suffisamment d'objets TypeDescriptor en entrée avec des identificateurs correspondant à chaque identificateur de chaque entité qui constitue une source dans l'association de la méthode Association. L'attribut IdentifierName d'un objet TypeDescriptor en entrée demande au catalogue de données métiers d'insérer la valeur d'identificateur de l'instance d'entité pertinente avant d'exécuter la méthode. Par exemple, dans AssociationMethodInstance, l'utilisateur a probablement fourni les valeurs d'identificateur pour l'instance d'entité source qu'il souhaite récupérer. Le catalogue de données métiers insère la valeur dans cet espace après l'instanciation complète de ce paramètre en utilisant toutes les valeurs par défaut.
Exemples
Les exemples suivants montrent un paramètre simple et un paramètre de retour plus complexe qui renvoient une collection d'instances d'entité. Le dernier exemple montre un paramètre utilisé pour coder un élément DataSet renvoyé par une méthode Web.
Paramètre simple
<Parameter Direction="In" Name="@minCustId">
<TypeDescriptor TypeName="System.Int32"
IdentifierName="CustomerID" AssociatedFilter="ID" Name="minCustId">
<DefaultValues>
<DefaultValue MethodInstanceName="CustFinderInstance"
Type="System.Int32">0</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
Paramètre complexe
<Parameter Direction="Return" Name="Customers">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data,
Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" IsCollection="true"
Name=" CustomerDataReader">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord,
System.Data, Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" Name="CustomerDataRecord">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32"
IdentifierName="IndividualID" Name="IndividualID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">ID
</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String"
Name="FirstName">
<Properties>
<Property Name="DisplayByDefault"
Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="LastName">
<Properties>
<Property Name="DisplayByDefault"
Type="System.Boolean">true</Property>
</Properties>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
DataSet
<Parameter Direction="Return" Name="Customers">
<TypeDescriptor Name=""DataSet"" TypeName=""System.Data.DataSet, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"">
<TypeDescriptors>
<TypeDescriptor Name=""Tables"" TypeName=""System.Data.DataTableCollection, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"" IsCollection=""true"">
<TypeDescriptors>
<TypeDescriptor Name=""Table"" TypeName=""System.Data.DataTable, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"" >
<TypeDescriptors>
<TypeDescriptor Name=""Rows"" TypeName=""System.Data.DataRowCollection, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"" IsCollection=""true"">
<TypeDescriptors>
<TypeDescriptor Name=""DataRow"" TypeName=""System.Data.DataRow, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"">
<TypeDescriptors>
<TypeDescriptor Name=""field1"" TypeName=""System.String"" IdentifierName=""f1"" />
<TypeDescriptor Name=""field2"" TypeName=""System.String"" />
<TypeDescriptor Name=""field3"" TypeName=""System.String"" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
Schéma
Enfant | Type | Se produit | Par défaut | Limites / Valeurs admises | Description |
---|---|---|---|---|---|
TypeName |
Attribut (String) |
1..1 |
Longueur min. : 1 Longueur max. : 255 |
Nom du type dans le système de type du système métier qui est décrit par cet objet TypeDescriptor. L'élément ITypeReflector associé à l'objet Parameter de cet objet TypeDescriptor qui est chargé de résoudre ce type de système d'entreprise en un Type .NET. Pour des services Web et des bases de données (ADO.NET), le système de type du système métier est le système de type .NET, de sorte que la valeur de TypeName est un nom Type .NET. |
|
IdentifierName |
Attribut (String) |
0..1 |
Nom de l'identificateur représenté par cet objet TypeDescriptor. Si cet objet TypeDescriptor décrit un paramètre d'entrée d'une méthode SpecificFinder , le paramètre est rempli avec la valeur de l'identificateur lorsque vous appelez la méthode FindSpecific. Si cet objet TypeDescriptor décrit un paramètre de sortie ou une méthode Finder ou SpecificFinder , la valeur du paramètre est incluse dans la collection des valeurs d'identificateur des instances d'entité renvoyées lorsque vous appelez FindFiltered ou FindSpecific. |
||
IdentifierEntityName |
Attribut (String) |
0..1 |
L'entité qui contient cet objet TypeDescriptor |
Nom de l'entité qui contient l'identificateur représenté par cet objet TypeDescriptor. IdentifierEntityName est nécessaire lorsque vous modélisez une association en tant que méthode sur une entité source. Dans ce cas, l'entité source renvoie des instances de l'entité de destination, de sorte que vous devez définir la propriété IdentifierEntityName avec le nom de l'entité de destination. |
|
AssociatedFilter |
Attribut (String) |
0..1 |
Nombre maximal d'objets TypeDescriptor par objet FilterDescriptor : 10 |
Nom du filtre associé à cet objet TypeDescriptor. |
|
IsCollection |
Attribut (Boolean) |
0..1 |
false |
Spécifie si l'objet TypeDescriptor représente une collection. Avec true, l'élément TypeDescriptor doit contenir exactement un élément TypeDescriptor enfant qui décrit un élément de la collection. Le paramètre de retour d'une méthode Finder doit avoir un élément TypeDescriptor avec IsCollection = true. |
|
DefaultValues |
Élément |
0..1 |
Nombre maximal de valeurs par défaut par élément TypeDescriptor : 10 |
Élément conteneur pour DefaultValue. |
|
TypeDescriptors |
Élément |
0..1 |
Nombre maximal d'objets TypeDescriptor par objet TypeDescriptor : 300 |
Élément conteneur pour TypeDescriptor. |
Propriétés
L’objet TypeDescriptor accepte la propriété suivante dans les champs d’un paramètre de retour.
Important
Les propriétés respectent la casse.
Propriété | Type | Obligatoire | Valeur par défaut | Limites/ Valeurs acceptées | Commentaires |
---|---|---|---|---|---|
ShowInPicker |
System.Boolean |
Non |
false |
true false |
Si cette propriété a la valeur True dans un champ d’un paramètre de retour, ce champ s’affiche dans le Sélecteur de données métiers. Le catalogue de données métiers affiche tous les champs qui ont la propriété « ShowInPicker » définie, plus le champ de titre dans le Sélecteur de données métiers. S’il n’y en a pas, il affiche uniquement le champ identificateur. |
Voir aussi
Autres ressources
Exemple SQL Server 2000 AdventureWorks
Procédure : utiliser le modèle objet Runtime
Procédure : mise en route de l'utilisation du modèle objet Administration
Forum aux questions : catalogue de données métiers
Catalogue de données métiers : glossaire