Partage via


Appeler des procédures stockées fortement typées dans SQL à l’aide du modèle de service WCF

Lorsque vous appelez une procédure répertoriée sous le nœud Procédures fortement typées dans le plug-in Add Adapter Reference Service, la sortie se présente sous la forme d’un jeu de résultats fortement typé. Cette rubrique fournit des instructions sur la création d’un client WCF pour appeler des procédures stockées dans SQL Server qui retournent un jeu de résultats fortement typé.

Notes

Si vous effectuez une opération sur des tables qui ont des colonnes de types définis par l’utilisateur, veillez à vous reporter à Opérations sur les tables et les vues avec des types User-Defined avant de commencer à développer votre application.

À propos des exemples utilisés dans cette rubrique

L’exemple de cette rubrique utilise la procédure stockée GET_EMP_DETAILS. Cette procédure stockée prend un ID d’employé comme paramètre d’entrée et retourne toutes les colonnes correspondantes pour l’employé avec cet ID. La procédure stockée GET_EMP_DETAILS est créée en exécutant le script SQL fourni avec les exemples. Pour plus d’informations sur les exemples, consultez Exemples d’adaptateurs. Un exemple , Execute_TypedStoredProcedure, basé sur cette rubrique, est également fourni avec les exemples d’adaptateur SQL.

Classe de client WCF

Le nom du client WCF généré pour appeler des procédures stockées sous le nœud Procédures fortement typées à l’aide de l’adaptateur SQL est répertorié dans le tableau suivant.

artefact de base de données SQL Server Nom du client WCF
Procédure (sous le nœud Procédures fortement typées ) TypedProcedures_[schéma]Client

[schema] est le schéma auquel appartient la procédure ; par exemple « dbo ».

Signature de méthode pour l’appel de procédures stockées

Le tableau suivant montre la signature de la méthode exposée pour appeler les procédures stockées.

Opération Signature de méthode
Nom de la procédure [PROC_NS] [procedure_name] (param1, param2, ...)

[PROC_NS] est l’espace de noms de la procédure ; par exemple schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS. StoredProcedureResultSet0[]

[procedure_name] est le nom de la procédure ; par exemple GET_EMP_DETAILS

Par exemple, la signature de la méthode pour appeler la procédure GET_EMP_DETAILS est illustrée dans l’extrait de code suivant.

public partial class TypedProcedures_dboClient : System.ServiceModel.ClientBase<TypedProcedures_dbo>, TypedProcedures_dbo{  
public schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[]   
  GET_EMP_DETAILS(System.Nullable<int> emp_id, out int ReturnValue);  
}  

Dans cet extrait de code,

  • TypedProcedures_dboClient est le nom de la classe . Dans cet exemple, vous utilisez cette classe pour créer un client afin d’appeler la procédure stockée.

  • public schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[] GET_EMP_DETAILS(System.Nullable<int> emp_id, out int ReturnValue) est la méthode que vous appelez dans cet exemple pour appeler la procédure stockée. Cette procédure stockée prend un ID d’employé et retourne un jeu de résultats fortement typé.

Création d’un client WCF pour appeler une procédure stockée dans SQL Server

L’ensemble générique d’actions requis pour effectuer une opération sur SQL Server à l’aide d’un client WCF implique un ensemble de tâches décrites dans Vue d’ensemble du modèle de service WCF avec l’adaptateur SQL. Cette section décrit spécifiquement comment créer un client WCF qui appelle une procédure stockée, dont le jeu de résultats est fortement typé. Dans cette rubrique, à titre d’exemple, vous appelez la procédure stockée GET_EMP_DETAILS. Cette procédure stockée est créée en exécutant le script SQL fourni avec chaque exemple.

  1. Créez un projet Visual C# dans Visual Studio. Pour cette rubrique, créez une application console.

  2. Générez la classe de client WCF pour la procédure stockée GET_EMP_DETAILS. Veillez à sélectionner la procédure sous le nœud Procédures fortement typées . Pour plus d’informations sur la génération d’une classe de client WCF, consultez Générer un client WCF ou un contrat de service WCF pour SQL Server Artifacts.

    Important

    Avant de générer la classe de client WCF, veillez à définir la propriété de liaison EnableBizTalkCompatibilityMode sur false.

  3. Dans le Explorateur de solutions, ajoutez une référence à Microsoft.Adapters.Sql et Microsoft.ServiceModel.Channels.

  4. Ouvrez le fichier Program.cs et créez un client comme décrit dans l’extrait de code ci-dessous.

    
              TypedProcedures_dboClient client = new TypedProcedures_dboClient("SqlAdapterBinding_TypedProcedures_dbo");  
    client.ClientCredentials.UserName.UserName = "<Enter username here>";  
    client.ClientCredentials.UserName.Password = "<Enter username here>";  
    

    Dans cet extrait de code, TypedProcedures_dboClient est le client WCF défini dans SqlAdapterBindingClient.cs. Ce fichier est généré par le plug-in Add Adapter Service Reference. SqlAdapterBinding_TypedProcedures_dbo est le nom de la configuration du point de terminaison client et est défini dans le app.config. Ce fichier est également généré par le plug-in Add Adapter Reference Service et contient les propriétés de liaison et d’autres paramètres de configuration.

    Notes

    Dans cet extrait de code, vous utilisez la liaison et l’adresse de point de terminaison du fichier de configuration. Vous pouvez également spécifier explicitement ces valeurs dans votre code. Pour plus d’informations sur les différentes façons de spécifier la liaison de client, consultez Configurer une liaison cliente pour l’adaptateur SQL.

  5. Ouvrez le client comme décrit dans l’extrait de code ci-dessous :

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  6. Appelez la procédure stockée GET_EMP_DETAILS comme décrit dans l’extrait de code ci-dessous.

    // Create array of type as specified in the method signature  
    schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[] resultSet =  
       new schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[1];  
    int returnCode;  
    
    try  
    {  
       Console.WriteLine("Calling a stored procedure...");  
       resultSet = client.GET_EMP_DETAILS(10001, out returnCode);  //Invoke the stored procedure  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    Console.WriteLine("The details for the employee with ID '10001' are:");  
    Console.WriteLine("*************************************************");  
    
    for (int i = 0; i < resultSet.Length; i++)  
       {  
          Console.WriteLine("Employee Name        : " + resultSet[i].Name);  
          Console.WriteLine("Employee Designation : " + resultSet[i].Designation);  
          Console.WriteLine("Employee Salary      : " + resultSet[i].Salary);  
       }  
    
    Console.WriteLine("*************************************************");  
    
    
  7. Fermez le client comme décrit dans l’extrait de code ci-dessous :

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  8. Générez le projet, puis exécutez-le. Le nom, la désignation et le salaire de l’ID d’employé sont affichés sur la console.

Voir aussi

Développer des applications en utilisant le modèle de service WCF