Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Comment : exécuter une procédure stockée dans LightSwitch

Les applications LightSwitch peuvent exécuter des procédures stockées dans une base de données SQL Server en les appelant à partir du niveau serveur. Vous pouvez créer des commandes au niveau client afin de déclencher l'exécution et vous pouvez définir des autorisations pour contrôler les personnes ayant accès aux procédures stockées.

Plusieurs bases de données utilisent les procédures stockées, car elles présentent des avantages par rapport aux autres types d'interaction de base de données, tels que la programmation modulaire, une exécution plus rapide et un trafic réseau réduit. Ces mêmes avantages s'appliquent à l'exécution de procédures stockées à partir de votre application LightSwitch.

Les procédures suivantes utilisent la procédure stockée uspUpdateEmployeePersonalInfo à partir de l'exemple de base de données AdventureWorks :

CREATE PROCEDURE [HumanResources].[uspUpdateEmployeePersonalInfo]
@EmployeeID [int], 
@NationalIDNumber [nvarchar](15), 
@BirthDate [datetime], 
@MaritalStatus [nchar](1), 
@Gender [nchar](1)
WITH EXECUTE AS CALLER
AS
BEGIN
SET NOCOUNT ON;
UPDATE [HumanResources].[Employee] 
SET [NationalIDNumber] = @NationalIDNumber 
,[BirthDate] = @BirthDate 
,[MaritalStatus] = @MaritalStatus 
,[Gender] = @Gender 
WHERE [EmployeeID] = @EmployeeID;
END;

Pour exécuter une autre procédure stockée, vous devez modifier les noms et les paramètres pour qu'ils lui correspondent.

Pour exécuter une procédure stockée

  1. Créez une table dans la base de données intrinsèque qui contient les paramètres d'entrée de la procédure stockée.

    1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du nœud Sources de données, puis choisissez Ajouter une table.

    2. Dans la fenêtre Propriétés, dans la zone de texte Nom, entrez UpdateEmployeePersonalInfoOperation.

      Remarque Remarque

      Vous allez généralement remplacer UpdateEmployeePersonalInfoOperation par le nom de la procédure stockée que vous souhaitez exécuter, accompagné d'un identificateur comme « Opération » pour spécifier que cette table est utilisée pour une procédure stockée.

    3. Ajoutez les champs suivants à la table :

      name

      Type

      Obligatoire

      EmployeeID

      Integer

      Oui

      NationalIDNumber

      String

      Oui

      BirthDate

      Date et heure

      Oui

      MaritalStatus

      String

      Oui

      Sexe

      String

      Oui

      Remarque Remarque

      Dans les champs Nom et Type, remplacez les valeurs par les noms et les types de données de chaque paramètre en entrée de votre procédure stockée, et assurez-vous que tous les champs sont marqués comme requis.

  2. Ajoutez une référence à la classe ConfigurationManager.

    1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du nœud Serveur, puis choisissez Ajouter une référence.

    2. Dans la boîte de dialogue Gestionnaire de références, développez le nœud Assemblys, sélectionnez le nœud Framework, puis cochez la case System.Configuration.

  3. Dans la liste Écrire le code, choisissez la méthode Inserting (dans le cas présent, la méthode UpdateEmployeePersonalInfoOperations_Inserting).

  4. Ajoutez le code qui ressemble à l'exemple suivant :

    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
        
    public partial class ApplicationDataService
    {
        partial void UpdateEmployeePersonalInfoOperations_Inserting(UpdateEmployeePersonalInfoOperation entity)
        {
            using (SqlConnection connection = new SqlConnection())
            {
                string connectionStringName = this.DataWorkspace.AdventureWorksData.Details.Name;
                connection.ConnectionString =
                    ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
    
                string procedure = "HumanResources.uspUpdateEmployeePersonalInfo";
                using (SqlCommand command = new SqlCommand(procedure, connection))
                {
                    command.CommandType = CommandType.StoredProcedure;
    
                    command.Parameters.Add(
                        new SqlParameter("@EmployeeID", entity.EmployeeID));
                    command.Parameters.Add(
                        new SqlParameter("@NationalIDNumber", entity.NationalIDNumber));
                    command.Parameters.Add(
                        new SqlParameter("@BirthDate", entity.BirthDate));
                    command.Parameters.Add(
                        new SqlParameter("@MaritalStatus", entity.MaritalStatus));
                    command.Parameters.Add(
                        new SqlParameter("@Gender", entity.Gender));
    
                    connection.Open();
                    command.ExecuteNonQuery();
                }
            }
    
            this.Details.DiscardChanges();
        }
    }
    
    

    Ce code crée un objet SqlConnection et obtient la chaîne de connexion du fichier web.config. Le code crée ensuite un objet SqlCommand avec le texte de commande requis, ajoute les valeurs de paramètre et exécute la commande.

    RemarqueRemarque

    Vous devez remplacer le nom DataWorkspace et les noms de paramètre et leurs valeurs par ceux de votre propre procédure stockée.

Pour appeler la procédure stockée à partir d'un écran

  1. Dans le Concepteur d'écran, ouvrez le menu contextuel du nœud Barre de commandes de l'écran, puis choisissez Ajouter un bouton.

  2. Dans la boîte de dialogue Ajouter un bouton, sélectionnez la case d'option Nouvelle méthode.

  3. Dans la zone de texte Nom, entrez UpdateEmployeeInfo.

    Remarque Remarque

    Vous pouvez le remplacer par un nom qui décrit ce que fait votre procédure stockée.

  4. Dans le Concepteur d'écran, ouvrez le menu contextuel du nœud du bouton, puis choisissez Modifier le code d'exécution.

  5. Ajoutez le code qui ressemble à l'exemple suivant :

    partial void UpdateEmployeeInfo_Execute()
    {
        DataWorkspace dataWorkspace = new DataWorkspace();
        Employee employee = this.Employees.SelectedItem;
    
        UpdatePersonalInfoOperation operation = 
            dataWorkspace.ApplicationData.UpdateEmployeePersonalInfoOperations.AddNew();
        operation.EmployeeID = employee.EmployeeID;
        operation.NationalIDNumber = employee.NationalIDNumber;
        operation.BirthDate = employee.BirthDate;
        operation.MaritalStatus = employee.MaritalStatus;
        operation.Gender = employee.Gender;
    
        dataWorkspace.ApplicationData.SaveChanges();
    }
    
    

    Ce code crée d'abord un DataWorkspace, puis un UpdateEmployeePersonalInfoOperation en utilisant les ApplicationData du DataWorkspace récemment créé. Les valeurs de l'opération sont affectées et l'opération est invoquée en appelant SaveChanges. Cette étape déclenche la méthode UpdateEmployeePersonalInfoOperations_Inserting de niveau intermédiaire qui exécute la procédure stockée de la base de données.

    ConseilConseil

    Les données de l'écran ne sont pas actualisées pour refléter les modifications lorsque vous appelez la procédure stockée. Pour actualiser l'écran, vous pouvez appeler Employees.Refresh() ou DataWorkspace.AdventureWorksData.Employees_Single(operation.EmployeeID) à la fin de la méthode Execute du bouton. Notez que Employees.Refresh() actualise tous les enregistrements et que Employees_Single actualise uniquement l'élément que vous spécifiez.

Pour définir les autorisations d'une procédure stockée

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du nœud Propriétés, puis choisissez Ouvrir.

  2. Sous l'onglet Contrôle d'accès, choisissez le type d'authentification à utiliser s'il n'est pas déjà spécifié.

  3. Choisissez le lien <Ajouter une nouvelle autorisation>, puis entrez UpdatePersonalInfo.

    Remarque Remarque

    Vous pouvez le remplacer par un nom qui décrit ce que fait votre procédure stockée.

  4. Dans l'Explorateur de solutions, ouvrez le menu contextuel de la table de votre procédure stockée, puis choisissez Ouvrir.

  5. Dans la liste Écrire le code, choisissez la méthode CanInsert.

  6. Ajoutez le code qui ressemble à l'exemple suivant :

    partial void UpdateEmployeePersonalInfoOperations_CanInsert(ref bool result)
    {
        result = this.Application.User.HasPermission(Permissions.UpdatePersonalInfo);
    }
    

Ajouts de la communauté

Afficher:
© 2015 Microsoft