Utilisation d'objets liés aux données dans le code

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

LightSwitch génère des objets et des membres qui décrivent vos données. Les noms de ces objets et membres correspondent à ceux des éléments inclus dans votre solution. Par exemple, si vous ajoutez une table nommée Customer, LightSwitch génère un objet nommé Customer. Cette rubrique décrit chaque type d'objet qui est généré par LightSwitch. Pour obtenir des exemples de code qui utilisent ces objets et membres pour effectuer des tâches courantes liées aux données, voir Réalisation de tâches liées aux données à l'aide du code.

L'illustration suivante récapitule les objets et membres générés de votre modèle de données.

Hiérarchie des objets générés

L'objet Application offre un accès de premier niveau aux objets inclus dans votre application. Pour accéder à l'objet Application, ouvrez un fichier de code utilisateur dans l'éditeur de code, puis tapez Application. Les types des méthodes et propriétés qui apparaissent dans IntelliSense une fois que vous avez tapé Application suivi de « . » changent en fonction du fichier de code dans lequel vous êtes en train d'écrire du code. Dans la plupart des cas, vous pouvez utiliser une propriété de l'objet Application pour obtenir un objet qui représente l'utilisateur actuel.

L'objet DataWorkspace est l'objet de premier niveau pour l'accès à toutes les données. L'objet DataWorkspace contient une propriété pour chaque source de données comprise dans votre projet. Par exemple, si vous avez une source de données nommée NorthwindData, LightSwitch génère une propriété nommée NorthwinddData. Quand vous tapez DataWorkspace dans l'éditeur de code, la propriété NorthwindData devient disponible dans une liste déroulante.

L'illustration suivante montre les membres générés qui peuvent s'afficher dans une liste déroulante.

Propriétés de source de données de l'objet DataWorkspace

LightSwitch génère un objet pour chaque source de données comprise dans un projet. Cet objet contient les membres que vous pouvez utiliser pour accéder aux données. Les membres d'un objet source de données incluent les propriétés des jeux d'entités et les méthodes de requête.

L'illustration suivante montre les membres générés qui peuvent s'afficher dans une liste déroulante.

Membres de l'objet source de données

Propriétés de jeux d'entités

Une propriété de jeu d'entités renvoie une collection d'entités. LightSwitch génère une propriété de jeu d'entités pour chaque entité comprise dans la source de données. Par exemple, si votre source de données contient une entité nommée Customer, LightSwitch génère une propriété nommée Customers. Vous pouvez utiliser la propriété Customers pour obtenir un objet EntitySet qui représente une collection d'entités Customer.

L'objet EntitySet contient également les membres qui vous permettent de vérifier si l'utilisateur actuel est autorisé à lire, mettre à jour ou supprimer des entités dans la collection. Pour plus d'informations, consultez Réalisation de tâches liées aux données à l'aide du code.

System_CAPS_ICON_note.jpg Remarque

EntitySet est l'un des types d'objets de collection d'entités. Pour optimiser les performances de votre code, vérifiez que vous utilisez le type d'objet de collection d'entités correct pour le type de logique métier que vous concevez. Pour plus d'informations, voir Performances et objets de collection d'entités.

Méthode de requête

Une méthode de requête obtient les résultats d'une requête. LightSwitch génère une méthode pour chaque requête définie dans votre source de données. Le nom de la méthode correspond au nom de la requête. Une requête peut renvoyer une seule entité ou une collection d'entités de type IDataServiceQueryable.

System_CAPS_ICON_note.jpg Remarque

IDataServiceQueryable<T> est l'un des types d'objets de collection d'entités. Pour optimiser les performances de votre code, vérifiez que vous utilisez le type d'objet de collection d'entités correct pour le type de logique métier que vous concevez. Pour plus d'informations, voir Performances et objets de collection d'entités.

Par défaut, LightSwitch génère les méthodes de requête suivantes pour chaque entité dans la source de données.

  1. <Nom de l'entité>_Single.

  2. <Nom de l'entité>_SingleOrDefault.

Ces deux méthodes acceptent un segment de clé primaire et renvoient un seul objet d'entité. Si aucune entité n'est renvoyée, la méthode <Nom de l'entité>_Single lève une exception tandis que la méthode <Nom de l'entité>_SingleOrDefault renvoie une valeur Null (Nothing dans Visual Basic).

LightSwitch génère un EntityObject pour chaque entité comprise dans une collection d'entités. Par exemple, si votre code a extrait une collection de commandes, la collection contient un EntityObject qui représente chaque commande. Un EntityObject contient les membres que vous pouvez utiliser pour supprimer une entité, lire ou mettre à jour la valeur des propriétés d'entité ou obtenir des entités associées. Vous pouvez obtenir un EntityObject à partir d'un objet de collection d'entités comme un EntitySet ou en appelant une méthode de requête qui renvoie une entité. Pour plus d'informations, consultez Réalisation de tâches liées aux données à l'aide du code.

L'illustration suivante montre les membres d'une entité Order nommée myOrder. L'entité Order contient des propriétés d'entité comme OrderDate, OrderID et Freight. L'entité Order possède étalement des membres que vous pouvez utiliser pour obtenir la collection Order_Details associée et le Customer qui a passé la commande.

Propriétés d'un objet entité

Dans cet exemple, la propriété Customer renvoie une entité Customer. Une entité Customer se trouve du côté « un » de la relation Customer-Order.

La propriété Order_Details renvoie une collection d'entités Order_Details. L'entité Order_Details se trouve du côté « plusieurs » de la relation Order-Order_Details. L'objet de la collection Order_Details est de type EntityCollection.

Cette illustration montre également une propriété nommée Order_DetailsQuery. Les propriétés qui se terminent par le mot Query renvoient un objet IDataServiceQueryable.

System_CAPS_ICON_note.jpg Remarque

EntityCollection et IDataServiceQueryable sont des types d'objets de collection d'entités. Pour optimiser les performances de votre code, vérifiez que vous utilisez le type d'objet de collection d'entités correct pour le type de logique métier que vous concevez. Pour plus d'informations, voir Performances et objets de collection d'entités.

Quand vous utilisez un objet de collection d'entités dans une expression LINQ, LightSwitch effectue une opération qui extrait les entités du niveau serveur. Le type d'objet que vous utilisez détermine si LightSwitch extrait toutes les entités d'une collection ou seulement un sous-ensemble. Pour veiller à ce que votre code fonctionne comme prévu, choisissez le type d'objet de collection le plus approprié à la logique métier que vous écrivez. Il existe deux types d'objets de collection d'entités : les objets qui amènent LightSwitch à évaluer une expression LINQ à distance et les objets qui amènent LightSwitch à évaluer une expression LINQ localement.

Opérations LINQ : exécution à distanceet exécution locale

Si vous utilisez un objet EntitySet ou IDataServiceQueryable dans une expression LINQ, LightSwitch transmet toute l'expression LINQ au service de données du niveau serveur. Ensuite, les résultats de l'expression sont retransmis au code appelant. Ce type d'exécution de requête fonctionne bien car seules les entités qui satisfont à la requête sont renvoyées au code appelant. En revanche, seul un sous-ensemble d'opérateurs de requête est pris en charge par le service de données. Si votre expression requiert d'autres opérateurs LINQ, envisagez d'utiliser d'autres types d'objets de collection.

L'illustration suivante montre une expression LINQ qui utilise un objet IDataServiceQueryable. Cet exemple montre que l'opération LINQ transmet toute l'expression au service de données et renvoie uniquement les entités Order qui satisfont aux conditions de la requête.

Exécution distante d'une expression de requête

Si vous utilisez un objet EntityCollection ou IEnumerable dans une expression LINQ, LightSwitch ne la transmet pas au service de données. En effet, LightSwitch extrait toutes les entités du type donné. Ensuite, l'expression est appliquée localement à toute la collection. Si une collection d'entités est volumineuse, ce type d'exécution de requête peut avoir des effets négatifs sur les performances. En revanche, votre code peut utiliser l'ensemble complet des opérateurs LINQ. De plus, cette approche peut être judicieuse quand vous voulez transmettre les entités de toute la collection à d'autres méthodes dans votre code.

L'illustration suivante montre une expression LINQ qui utilise un objet EntityCollection. Cet exemple montre que l'opération LINQ extrait toutes les entités Order d'un client particulier. Ensuite, les conditions de la requête sont appliquées à toute la collection, localement.

Exécution locale d'une expression de requête

Exemples : obtention d'objets de collection d'entités dans du code

Voici comment obtenir des collections d'entités Order dans l'exemple de base de données Northwind.

Pour obtenir cet objet de collection d'entitésUtilisez ce codeExécution à distance ou locale
EntitySetDataWorkspace.Northwind.Orders

ou

 myOrder.Details.EntitySet()
À distance
IDataServiceQueryablemyCustomer.OrdersQuery

ou

 DataWorkspace.Northwind.Orders.GetQuery()
À distance
EntityCollectionmyCustomer.OrdersLocal
IEnumerablemyCustomer.OrdersQuery.Execute()

ou

 DataWorkspace.Northwind.Orders.GetQuery().Execute()
À distance

Données : les informations de votre application
Réalisation de tâches liées aux données à l'aide du code

Afficher: