Partager via


Procédure pas à pas : mise à jour d'enregistrements à l'aide des procédures stockées

Vous ne pouvez pas appeler une procédure stockée dans une base de données SQL Server directement d' LightSwitch, mais vous pouvez créer un service riche de (RIA) d'application Web Windows Communication Foundation (WCF) pour exposer des procédures stockées puis pour accéder au service de votre application pour LightSwitch .Cette procédure pas - à - pas indique comment insérer, mettre à jour, et supprimer des enregistrements client dans une application d' LightSwitch à l'aide de les procédures stockées et d'un service WCF RIA.

De nombreux administrateurs de base de données n'autorisent pas l'accès direct aux tables, à la place exposant des vues en lecture seule et fournissant des procédures stockées à l'insertion, la mise à jour, et aux enregistrements de suppression.LightSwitch ne reconnaît pas les procédures stockées, donc aucune base de données qui s'appuie sur des procédures stockées pour mettre à jour les enregistrements peut d'abord sembler inutilisable.Si votre travail de petites quantités en outre, vous pouvez en effet utiliser ces bases de données d' LightSwitch.

Composants requis

Cette procédure pas - à - pas utilise la base de données Northwind du didacticiel de Visite guidée de LightSwitch .Pour plus d'informations, consultez Installation de l'exemple de base de données Northwind.

Créez les procédures stockées

Dans la plupart des cas, vous accédez aux procédures stockées qui existent déjà dans une base de données.La base de données Northwind n'a pas les procédures stockées nécessaires pour insérer, mettre à jour, et supprimer des enregistrements client, vous devez les ajouter.

Pour ajouter des procédures stockées

  1. Dans la barre de menus, sélectionnez Afficher, Explorateur d'objets SQL Server.

  2. Dans la fenêtre Explorateur d'objets SQL Server, développez le nœud de base de données Les Comptoirs, puis choisissez Programmabilité.

  3. Développez le nœud Programmabilité, puis choisissez Procédures stockées.

  4. Ouvrez le menu contextuel pour Procédures stockées, puis choisissez Ajouter une nouvelle procédure stockée.

  5. Dans Éditeur de code, remplacez le contenu par le code suivant Transact-SQL, puis choisissez le bouton Mettre à jour .

    CREATE Procedure [dbo].[InsertCustomer]
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24)
    AS
    INSERT INTO [dbo].[Customers]
               ([CustomerID]
               ,[CompanyName]
               ,[ContactName]
               ,[ContactTitle]
               ,[Address]
               ,[City]
               ,[Region]
               ,[PostalCode]
               ,[Country]
               ,[Phone]
               ,[Fax])
         VALUES
               (@CustomerID
               ,@CompanyName
               ,@ContactName
               ,@ContactTitle
               ,@Address
               ,@City
               ,@Region
               ,@PostalCode
               ,@Country
               ,@Phone
               ,@Fax)
    
  6. Dans la boîte de dialogue Aperçu des mises à jour de la base de données, choisissez le bouton Mettre à jour la base de données .

    La procédure stockée InsertCustomer est ajoutée à la base de données.

  7. Ouvrez le menu contextuel pour Procédures stockées, puis choisissez Ajouter une nouvelle procédure stockée.

  8. Dans Éditeur de code, remplacez le contenu par le code suivant Transact-SQL, puis choisissez le bouton Mettre à jour .

    CREATE PROCEDURE [dbo].[UpdateCustomer]
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24)
    AS
    UPDATE [dbo].[Customers]
       SET [CompanyName] = @CompanyName
          ,[ContactName] = @ContactName
          ,[ContactTitle] = @ContactTitle
          ,[Address] = @Address
          ,[City] = @City
          ,[Region] = @Region
          ,[PostalCode] = @PostalCode
          ,[Country] = @Country
          ,[Phone] = @Phone
          ,[Fax] = @Fax
     WHERE CustomerID=@CustomerID
    
  9. Dans la boîte de dialogue Aperçu des mises à jour de la base de données, choisissez le bouton Mettre à jour la base de données .

    La procédure stockée UpdateCustomer est ajoutée à la base de données.

  10. Ouvrez le menu contextuel pour Procédures stockées, puis choisissez Ajouter une nouvelle procédure stockée.

  11. Dans Éditeur de code, remplacez le contenu par le code suivant Transact-SQL, puis choisissez le bouton Mettre à jour .

    CREATE PROCEDURE [dbo].[DeleteCustomer]
        @CustomerID nchar(5)
    AS
    
    DELETE FROM [dbo].[Customers]
     WHERE CustomerID=@CustomerID
    
  12. Dans la boîte de dialogue Aperçu des mises à jour de la base de données, choisissez le bouton Mettre à jour la base de données .

    La procédure stockée DeleteCustomer est ajoutée à la base de données.

Créez un Entity Data Model

L'étape suivante consiste à créer un modèle de données Entity Framework, vous venez qui mettra à jour, et va supprimer des enregistrements à l'aide de les procédures stockées que vous venez de ajoutées.

Pour créer un modèle de données

  1. Dans la barre de menus, sélectionnez Fichier, Nouveau, Project.

  2. Dans la boîte de dialogue Nouveau projet, développez Visual Basic ou le nœud Visual C#, puis choisissez le modèle Bibliothèque de classes .

  3. Dans la zone de texte Nom, entrez NorthwindService, puis choisissez le bouton OK .

  4. Dans Explorateur de solutions, ouvrez le menu contextuel du nœud MyProject, puis choisissez Ouvrir.

  5. Dans la liste Framework cible, choisissez .NET Framework 4.

  6. Dans Explorateur de solutions, ouvrez le menu contextuel pour NorthwindService, choisissez Ajouter, puis choisissez Nouvel élément.

  7. Dans la boîte de dialogue Ajouter un nouvel élément, choisissez le modèle ADO.NET Entity Data Model .

  8. Dans la zone de texte Nom, entrez Northwind.edmx, puis choisissez le bouton Ajouter .

  9. Dans Assistant EDM, choisissez l'icône Générer à partir de la base de données, puis choisissez le bouton Suivant .

  10. Dans la page Choisir votre connexion de données, choisissez le bouton Nouvelle connexion .

  11. Dans la boîte de dialogue Propriétés de connexion, dans la zone de texte Nom du serveur, entrez le nom du serveur sur lequel la base de données Northwind est installée.

    Remarque pour J#Remarque pour J#

    Vous pouvez rechercher le nom dans Explorateur d'objets SQL Server.

  12. Dans la zone de texte Sélectionner ou entrer un nom de base de données, entrez Northwind.

  13. Choisissez le bouton OK, puis choisissez le bouton Suivant .

  14. Dans la page Choisir vos paramètres et objets de base de données, développez le nœud Tables, puis activez la case à cocher Clients .

  15. Développez le nœud Procédures et fonctions stockées, activez les cases à cocher DeleteCustomer, InsertCustomer, et d' UpdateCustomer, puis choisissez le bouton Terminer .

    Le modèle d'entité est généré, et le schéma de base de données Northwind.edmx s'affiche.

    [!REMARQUE]

    Si une boîte de dialogue Avertissement de sécurité s'affiche, cliquez sur le bouton OK pour exécuter le modèle.

  16. Ouvrez le menu contextuel pour l'entité Client, puis choisissez Mappage de procédure stockée.

  17. Dans la fenêtre Détails de mappage, dans <Select Insert Function> la liste, sélectionnez InsertCustomer.

  18. Dans <Select Update Function> la liste, sélectionnez UpdateCustomer.

  19. Dans <Select Delete Function> la liste, sélectionnez DeleteCustomer.

  20. Fermez le concepteur Northwind.edmx .

  21. Dans Explorateur de solutions, choisissez le bouton de barre d'outils Afficher tous les fichiers .

  22. Développez le nœud pour Northwind.edmx, puis supprimez les fichiers Northwind.tt et de Northwind.Context.tt .

  23. Ouvrez le fichier Northwind.edmx, puis mettez en surbrillance l'espace blanc en dehors de l'entité Client .

  24. Dans la fenêtre Propriétés, remplacez la valeur de la propriété Stratégie de génération de code par Par défaut.

  25. Dans la barre de menus, sélectionnez Build, Génération NorthwindService.

    Vous avez maintenant un modèle de données Entity Framework, vous venez qui mettra à jour, et va supprimer des enregistrements à l'aide de vos procédures stockées.

Créez un service WCF RIA

Si vous créez un service WCF RIA, votre application d' LightSwitch peut utiliser le modèle de données Entity Framework comme source de données.

Pour créer un service

  1. Dans Explorateur de solutions, ouvrez le menu contextuel du projet de NorthwindService, choisissez Ajouter, puis choisissez Nouvel élément.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, choisissez le modèle Classe DomainService .

  3. Dans la zone de texte Nom, entrez NorthwindService, puis choisissez le bouton Ajouter .

  4. Dans la boîte de dialogue Ajouter une nouvelle classe de service de domaine, choisissez le bouton OK .

  5. Dans Explorateur de solutions, ouvrez le menu contextuel pour Service de Northwind, puis choisissez Ajouter une référence.

  6. Sélectionnez le nœud Extensions, activez la case à cocher System.ServiceModel.DomainServices.EntityFramework, puis choisissez le bouton OK .

  7. Ajoutez le code suivant à la classe NorthwindService :

    Imports System.ServiceModel.DomainServices.EntityFramework
    
    Public Class NorthwindService
        Inherits LinqToEntitiesDomainService(Of NorthwindEntities)
    
        <Query(IsDefault:=True)>
        Public Function GetCustomers() As IQueryable(Of Customer)
            Return Me.ObjectContext.Customers
        End Function
    
        Public Sub InsertCustomer(ByVal customer As Customer)
            If ((customer.EntityState = EntityState.Detached) = False) Then
                Me.ObjectContext.ObjectStateManager.
                    ChangeObjectState(customer, EntityState.Added)
            Else
                Me.ObjectContext.Customers.AddObject(customer)
            End If
        End Sub
    
        Public Sub UpdateCustomer(ByVal currentCustomer As Customer)
            Me.ObjectContext.Customers.AttachAsModified(currentCustomer,
                Me.ChangeSet.GetOriginal(currentCustomer))
        End Sub
    
        Public Sub DeleteCustomer(ByVal customer As Customer)
            If ((customer.EntityState = EntityState.Detached) = False) Then
                Me.ObjectContext.ObjectStateManager.
                    ChangeObjectState(customer, EntityState.Deleted)
            Else
                Me.ObjectContext.Customers.Attach(customer)
                Me.ObjectContext.Customers.DeleteObject(customer)
            End If
        End Sub
    End Class
    
    namespace NorthwindService
    {
        public class NorthwindService : LinqToEntitiesDomainService<NorthwindEntities>
        {
            [Query(IsDefault = true)]
            public IQueryable<Customer> GetCustomers()
            {
                return this.ObjectContext.Customers;
            }
    
            public void InsertCustomer(Customer customer)
            {
                if ((customer.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.
                        ChangeObjectState(customer, EntityState.Added);
                }
                else
                {
                    this.ObjectContext.Customers.AddObject(customer);
                }
            }
    
            public void UpdateCustomer(Customer currentCustomer)
            {
                this.ObjectContext.Customers.AttachAsModified(currentCustomer,
                    this.ChangeSet.GetOriginal(currentCustomer));
            }
    
            public void DeleteCustomer(Customer customer)
            {
                if ((customer.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.
                        ChangeObjectState(customer, EntityState.Deleted);
                }
                else
                {
                    this.ObjectContext.Customers.Attach(customer);
                    this.ObjectContext.Customers.DeleteObject(customer);
                }
            }
        }
    }
    
  8. Dans la barre de menus, sélectionnez Build, Génération NorthwindService.

  9. Dans la barre de menus, sélectionnez Fichier, Enregistrer tout.

Créez un LightSwitch Applications

La dernière étape consiste à créer une application de LightSwitch qui consommera le service WCF RIA que vous venez de créer.

Pour créer l'application

  1. Dans la barre de menus, sélectionnez Fichier, Nouveau, Project.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez la catégorie LightSwitch, puis choisissez Application LightSwitch (Visual Basic) ou le modèle de projet de Application LightSwitch (Visual C#) .

  3. Dans la zone de texte Nom, entrez Northwind, puis choisissez le bouton OK .

  4. Dans la barre de menus, sélectionnez Fichier, Ajouter, Projet existant.

  5. Sélectionnez le projet de NorthwindService, puis choisissez Ouvrir.

  6. Dans Explorateur de solutions, dans le projet de Les Comptoirs, ouvrez le menu contextuel du nœud Sources de données, puis choisissez Ajouter une source de données.

  7. Dans Assistant Attacher une source de données, choisissez l'icône Service RIA WCF .

  8. Choisissez le bouton Suivant, puis choisissez le bouton Ajouter une référence .

  9. Dans la boîte de dialogue Gestionnaire de références, choisissez le bouton Parcourir .

  10. Dans le dossier bin\version finale de votre projet de NorthWindService, sélectionnez le fichier NorthwindService.dll, puis choisissez le bouton Ajouter .

  11. Choisissez le bouton OK pour fermer la boîte de dialogue, puis choisissez le bouton Suivant .

  12. Dans la page Sélectionner des objets source de données, activez la case à cocher Entités, puis choisissez le bouton Terminer .

  13. Dans Explorateur de solutions, dans le projet de NorthwindService, ouvrez le fichier App.Config .

  14. Dans la section d' ConnectionStrings, copiez la chaîne de connexion qui commence par <add name’”NorthwindEntities”.

  15. Dans Explorateur de solutions, sélectionnez le projet de Les Comptoirs, puis choisissez Affichage des fichiers de la liste dans la barre d'outils.

  16. Développez le nœud Serveur, puis choisissez Web.config.

  17. Dans la section de ConnectionStrings, collez la chaîne de connexion que vous avez copiée.

    Vous avez maintenant une source de données active entièrement qui peut insérer, mettre à jour, et supprimer des enregistrements à l'aide de les procédures stockées.

Étapes suivantes

Vous pouvez créer les écrans et logique métier d' LightSwitch normalement et faites rapidement et facilement une demande active à l'aide de les procédures stockées.

Voir aussi

Tâches

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

Autres ressources

Données : les informations de votre application