Utilisation d'objets liés aux données dans le code
LightSwitch génère les objets et membres qui décrivent vos données.Les noms de ces objets et membres correspondent aux noms d'éléments 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 généré par LightSwitch.Pour consulter des exemples de code qui utilisent ces objets et membres pour effectuer des tâches liées aux données communes, consultez Réalisation de tâches liées aux données à l'aide du code.
Hiérarchie des objets et membres générés
L'illustration suivante résume les objets et membres générés de votre modèle de données.
Application
L'objet Application fournit l'accès de niveau supérieur aux objets de votre application.Pour accéder à l'objet Application, ouvrez un fichier de code utilisateur dans l'éditeur de code, puis tapez Application.Les types de méthodes et propriétés qui s'affichent dans IntelliSense après avoir tapé Application et «.» changeront selon le fichier de code dans lequel vous écrivez le 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.
Espace de travail des données
L'objet DataWorkspace est l'objet de niveau supérieur pour l'accès à toutes les données.L'objet DataWorkspace contient une propriété pour chaque source de données de 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.Lorsque vous tapez DataWorkspace dans l'Éditeur de code, la propriété NorthwindData devient disponible dans une liste déroulante.
L'illustration suivante montre certains membres générés qui peuvent s'afficher dans une liste déroulante.
Source de données
LightSwitch génère un objet pour chaque source de données dans votre projet.Cet objet contient des membres que vous pouvez utiliser pour accéder aux données.Les membres d'un objet source de données incluent des propriétés de jeu d'entités et des méthodes de requête.
L'illustration suivante montre certains membres générés qui peuvent s'afficher dans une liste déroulante.
Propriétés de jeu d'entités
Une propriété de jeu d'entités retourne une collection d'entités.LightSwitch génère une propriété de jeu d'entités pour chaque entité 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 des membres qui vous permettent de vérifier si l'utilisateur actuel a l'autorisation de 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.
[!REMARQUE]
EntitySet est l'un des types d'objets collection d'entité.Pour optimiser les performances de votre code, assurez-vous que vous utilisez le type approprié d'objet collection d'entités pour le type de logique métier que vous écrivez.Pour plus d'informations, consultez Objets collection d'entités et performance.
Méthode de requête
Une méthode de requête obtient le résultat 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 retourner une seule entité ou une collection d'entités de type IDataServiceQueryable.
[!REMARQUE]
IDataServiceQueryable<T> est l'un des types d'objets collection d'entités.Pour optimiser les performances de votre code, assurez-vous que vous utilisez le type approprié d'objet collection d'entités pour le type de logique métier que vous écrivez.Pour plus d'informations, consultez Objets collection d'entités et performance.
Par défaut, LightSwitch génère les méthodes de requête suivantes pour chaque entité de la source de données.
<Nom d'entité>_Single.
<Nom d'entité>_SingleOrDefault.
Ces deux méthodes acceptent un segment de clé primaire et retournent un seul objet d'entité.Si aucune entité n'est retournée, la méthode <Nom d'entité>_Single lève une exception alors que la méthode <Nom d'entité>_SingleOrDefault retourne une valeur Null (Nothing en Visual Basic).
Entités
LightSwitch génère un EntityObject pour chaque entité 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 des 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 d'un objet collection d'entités tel qu'un EntitySet ou en appelant une méthode de requête qui retourne une entité.Pour plus d'informations, consultez Réalisation de tâches liées aux données à l'aide du code.
L'illustration suivante affiche les membres d'une entité Order nommée myOrder.L'entité Order contient des propriétés d'entité telles que OrderDate, OrderID et Freight.L'entité Order contient également des membres que vous pouvez utiliser pour obtenir la collection Order_Details connexe et le Customer qui a passé la commande.
Dans cet exemple, la propriété Customer retourne une entité Customer.Une entité Customer représente le côté « un » de la relation Customer-Order.
La propriété Order_Details retourne une collection d'entités Order_Details.L'entité Order_Details représente le côté « plusieurs » de la relation Order-Order_Details.L'objet d'une 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 retournent un objet IDataServiceQueryable.
[!REMARQUE]
EntityCollection et IDataServiceQueryable sont les deux types d'objets collection d'entité.Pour optimiser les performances de votre code, assurez-vous que vous utilisez le type approprié d'objet collection d'entités pour le type de logique métier que vous écrivez.Pour plus d'informations, consultez Objets collection d'entités et performance.
Objets collection d'entités et performance
Lorsque vous utilisez un objet collection d'entités dans une expression LINQ, LightSwitch exécute une opération qui extrait des entités de la couche serveur.Type d'objet que vous utilisez pour déterminer si LightSwitch extrait toutes les entités dans une collection ou uniquement un sous-ensemble d'entités.Pour vérifier que votre code s'exécute comme prévu, choisissez le type le plus approprié d'objet de collection pour la logique métier que vous écrivez.Il existe deux types d'objets de collection d'entités : les objets qui entraînent l'évaluation d'une expression LINQ à distance par LightSwitch, et les objets qui entraînent l'évaluation d'une expression LINQ localement par LightSwitch.
Opérations LINQ : Distant VS. une exécution locale
Si vous utilisez un objet EntitySet ou IDataServiceQueryable dans une expression LINQ, LightSwitch passe l'expression LINQ entière au service de données de la couche serveur.Les résultats de l'expression sont ensuite passés en retour au code appelant.Ce type d'exécution de requête est efficace, car seules les entités qui satisfont la requête sont retournées au code appelant.Toutefois, 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 collection.
L'illustration suivante affiche une expression LINQ qui utilise un objet IDataServiceQueryable.Cet exemple montre l'opération LINQ passant l'expression entière au service de données et retournant uniquement des entités Order qui satisfont les conditions de la requête.
Si vous utilisez un objet de type EntityCollection ou IEnumerable dans une expression LINQ, LightSwitch ne passe pas l'expression au service de données.À la place, LightSwitch récupère toutes les entités du type donné.L'expression est ensuite appliquée localement à la collection entière.Si une collection d'entités est volumineuse, ce type d'exécution de requête peut avoir un impact sur les performances.Toutefois, votre code peut utiliser l'ensemble complet d'opérateurs LINQ.De plus, cette approche peut avoir un sens lorsque vous voulez passer les entités de collection complète à d'autres méthodes dans votre code.
L'illustration suivante affiche une expression LINQ qui utilise un objet EntityCollection.Cet exemple montre l'opération LINQ qui extrait toutes les entités Order pour un client particulier.Les conditions de la requête sont ensuite appliquées localement à la collection entière.
Exemples : obtention d'objets collection d'entités dans le code
L'exemple suivant montre comment obtenir des collections d'entités Order dans l'exemple de base de données Northwind.
Pour obtenir cet objet collection d'entités |
Utiliser ce code |
Exécution distante ou locale |
---|---|---|
EntitySet |
DataWorkspace.Northwind.Orders ou myOrder.Details.EntitySet() |
Remote |
IDataServiceQueryable |
myCustomer.OrdersQuery ou DataWorkspace.Northwind.Orders.GetQuery() |
Remote |
EntityCollection |
myCustomer.Orders |
Local |
IEnumerable |
myCustomer.OrdersQuery.Execute() ou DataWorkspace.Northwind.Orders.GetQuery().Execute() |
Remote |
Voir aussi
Concepts
Réalisation de tâches liées aux données à l'aide du code
Écriture de code dans LightSwitch