Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais
Nous recommandons d’utiliser Visual Studio 2017

restrictions génériques de mappage aux spécifications de source de données

Le moteur de métadonnées Visual Studio pilote l'énumération de types d'objet en spécifiant le nom de type avec les restrictions pour une énumération données. Il appartient au type d'objet de données, puis, pour fournir des informations pour convertir le nom et les restrictions de type dans un appel d'énumération. Toutefois, comme les restrictions sont nécessairement spécifiques à la source de données, vous devez avoir un jeu de restrictions génériques de chaque type mappé, ainsi que d'autres, une façon de convertir ces restrictions génériques dans les restrictions spécifiques à la source de données effectives pour énumérer l'ensemble correct d'objets.

Pour que le moteur de métadonnées fournisse des objets sources de données qui mappent aux types génériques avec les identificateurs génériques et les propriétés, le moteur de métadonnées a besoin d'une méthode pour permettre aux clients spécifier un ensemble d'objets génériques pour énumérer. Au niveau de la source de données, la méthode est d'utiliser les restrictions pour limiter le jeu d'objets de données énumérés par le fournisseur de données.

Toutefois, ces restrictions sont nécessairement spécifiques à la source de données et ne peuvent pas être utilisées par conséquent directement par un client générique. Par conséquent, un jeu de restrictions génériques doit être associé à chaque type mappé ; en outre, il doit exister une façon de convertir ces restrictions génériques aux restrictions spécifiques à la source de données correspondantes qui sont nécessaires pour énumérer un ensemble donné d'objets de données.

Comme pour le mappage des données spécifiques à la source de données aux concepts génériques (consultez identificateurs de type et propriétés d'objet de mappage aux types génériques), un problème se produit chaque fois que vous mappez spécifique à la source de données aux restrictions génériques. L'ambiguïté peut se produire, par exemple, lorsqu'une restriction générique représente plusieurs restrictions spécifiques à la source de données, ou vice versa. Dans d'autres rubriques d'aide nous appelons cela comme b :problème de g.

Une solution est fournie dans le schéma XML, qui permet à un fournisseur de données pour spécifier une conversion personnalisée à une restriction spécifique à la source de données, avec un ou plusieurs valeurs génériques des restrictions.

Spécifiquement, lorsqu'un fournisseur de données spécifie un élément mappé associé à un type d'objet donné, il est possible d'ajouter des attributs qui décrivent les restrictions, le filtre, et le tri nécessaires. Dans les restrictions et le filtre, il est possible d'inclure un spécificateur de données qui fournit la valeur appropriée à une restriction générique. Prenons l'exemple suivant :

<MappedType name="Table" underlyingType="Table" />
    <Selection restrictions="{Schema},{Name}"/>
</MappedType>

Dans cet exemple, le fournisseur indique que les valeurs des restrictions génériques Schema et Name pour le type mappé par la table doivent être mappées aux restrictions spécifiques au serveur principal avec le schéma en premier et le nom ensuite.

Dans les cas où il n'existe pas de mappage direct entre les restrictions génériques et de source-détail, le fournisseur peut ajouter et référencer des valeurs de substitution du spécificateur de données, comme dans l'exemple suivant :

<MappedType name="Table" underlyingType="Table" />
    <Selection restrictions="{Schema},{Name},{0}">
        <SubstitutionValue mappedRestriction="Type">
            <Conversion>
                <Calculate expr="IIF({0}='SYSTEM',true,false)"                       type="System.Boolean"/>
            </Conversion>
        </SubstitutionValue>
    </Selection>
</Concept>

Dans cet exemple, le fournisseur a une troisième restriction, IsSystemObject, qui est une valeur booléenne spécifiant le type d'objets qui doivent être énumérés. Si aucune valeur n'est spécifiée, tous les objets sont énumérés ; si false, seuls objets utilisateurs sont énumérés ; si true, seuls objets système sont énumérés.

De plus, supposons que le type mappé par table possède une restriction générique, Type, dont la valeur est « USER » ou « SYSTEM ». Étant donné qu'il n'existe pas de mappage direct entre ces deux formats, le fournisseur ajoute une valeur de substitution qui prend la valeur de restriction de « type » et utilise une expression pour le convertir en une valeur booléenne équivalente. Le fournisseur de données utilise un spécificateur de données pour référencer la valeur de substitution. Le spécificateur de données complète la référence à l'aide d'un index en un jeu de valeurs de substitution que vous avez spécifiés sur l'élément de MappedType. Dans ce cas, une seule valeur est spécifiée.

Afficher: