Utilisation de TypedDataTable et DataConnection
Dans de nombreux scénarios, l’utilisation de DataConnection offre de meilleures performances et consomme moins de mémoire que l’utilisation de TypedDataTable. Toutefois, TypedDataTable peut être nécessaire dans certains cas en raison de certaines restrictions sur l’utilisation de DataConnection. Dans d’autres cas, l’utilisation de TypedDataTable peut produire de meilleures performances que l’utilisation de DataConnection. Cette rubrique décrit les critères et facteurs à examiner pour choisir l'approche appropriée.
Quand utiliser TypedDataTable à la place de DataConnection
Utilisez TypedDataTable à la place de DataConnection dans les cas suivants :
Les données doivent être modifiées, mais la table ne possède pas de clé primaire. Pour apporter des modifications aux données à l’aide de DataConnection, une clé primaire est requise. Par conséquent, s’il n’y a pas de clé primaire, TypedDataTable est la seule approche viable.
Notes
Le moteur de règles met uniquement à jour les valeurs en mémoire d’un TypedDataTable. Il incombe à l'appelant de rendre ces modifications permanentes.
La sélectivité est élevée. Ceci signifie qu'un grand pourcentage de lignes de la table réussira les tests spécifiés comme conditions de règle. Dans ce cas, DataConnection n’offre pas beaucoup d’avantages et peut être moins performant que TypedDataTable.
La table est généralement petite, avec moins de 500 lignes. Notez que ce nombre peut être plus grand ou plus petit selon la forme de règle et la mémoire disponible pour le moteur de règles.
Le comportement de type chaînage de règle est attendu dans un ensemble de règles. L’appel de la fonction Update sur un DataConnection n’est pas pris en charge, mais vous pouvez appeler DataConnection.Update dans une règle à l’aide d’une méthode d’assistance. Lorsque le chaînage de règles est requis, TypedDataTable est un meilleur choix.
Une ou plusieurs colonnes de la table contiennent une très grande quantité de données inutiles aux règles. Il s'agit par exemple d'une base de données d'image où les colonnes contiennent l'image (grande quantité de données), le nom, la date, etc. Si l'image n'est pas requise, il peut être préférable de sélectionner uniquement les colonnes requises par les règles. Par exemple, l’émission d’une requête telle que « SELECT Name, Date from TABLE » peut être plus efficace que l’utilisation de DataConnection.
Si de nombreuses règles nécessitent ou mettent à jour la même ligne de base de données, à l’aide d’un TypedDataTable, la ligne est partagée entre toutes les règles, et si la condition est la même (par exemple, Table.Column == 5), l’évaluation de la condition peut être optimisée. Avec dataConnection, en général, une requête est générée pour chaque règle qui utilise DataConnection. Bien que les lignes soient réutilisées (si la table a une clé primaire), plusieurs requêtes peuvent être générées pour obtenir les mêmes données à chaque fois.
Quand utiliser DataConnection à la place de TypedDataTable
Utilisez DataConnection à la place de TypedDataTable dans les cas suivants :
La table contient un grand nombre de lignes, mais la sélectivité est faible — seul un faible pourcentage de lignes satisferont les conditions de règle.
Seule une table de base de données est volumineuse ; tous les autres objets utilisés dans la règle ont un petit nombre d'instances. Dans le pire des cas, le nombre de requêtes exécutées sur la base de données est égal au produit de toutes les autres instances utilisées dans la règle.
Les règles se composent exclusivement de conditions conjonctives et des objets autres que la table de base de données sont utilisés dans ces règles.