Partager via


Appeler Table-Valued functions dans SQL Server à l’aide du modèle de service WCF

Vous pouvez utiliser l’adaptateur SQL dans une application .NET à l’aide du modèle de service WCF pour appeler des fonctions table dans SQL Server. L’adaptateur expose les fonctions table sous forme de méthodes qui peuvent être appelées directement sur SQL Server. Pour plus d’informations sur la prise en charge des fonctions scalaires par l’adaptateur, consultez Exécuter des fonctions Table-Valued dans SQL Server à l’aide de l’adaptateur SQL.

Cette rubrique montre comment appeler la fonction TVF_EMPLOYEE dans une base de données SQL Server. La fonction TVF_EMPLOYEE prend la désignation d’un employé dans la table Employee et retourne l’enregistrement de l’employé. La fonction TVF_EMPLOYEE et la table Employee sont créées en exécutant le script SQL fourni avec les exemples. Pour plus d’informations, consultez Exemples d’adaptateurs.

À propos des exemples utilisés dans cette rubrique

L’exemple de cette rubrique a appelé la fonction table TVF_EMPLOYEE sur la table Employee . TVF_EMPLOYEE fonction et la table Employee sont créées en exécutant le script SQL fourni avec les exemples. Un exemple, TableFunction_ServiceModel, basé sur cette rubrique, est également fourni avec les exemples d’adaptateur SQL. Pour plus d’informations, consultez Exemples d’adaptateurs.

Classe de client WCF

Le nom du client WCF généré pour appeler la fonction scalaire dans SQL Server à 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
Fonction table TableValuedFunctions_[SCHEMA]Client

[SCHEMA] = Collection d’artefacts SQL Server ; par exemple, dbo.

Signature de méthode pour l’appel de fonctions table

Le tableau suivant montre les signatures de méthode pour les opérations de base sur une table. Les signatures sont les mêmes pour une vue, sauf que l’espace de noms et le nom de la vue remplacent ceux de la table.

Opération Signature de méthode
Nom de la fonction table public [NAMESPACE][FUNCTION_NAME][] [FUNCTION_NAME](param1, param2, ...)

[NAMESPACE] = Espace de noms, par exemple, schemas.microsoft.com.Sql._2008._05.Types.TableFunctionReturnTables.dbo.TVF_EMPLOYEE

[FUNCTION_NAME] = Nom de la fonction table.

Par exemple, le code suivant montre les signatures de méthode pour une classe de client WCF générées pour les fonctions scalaires TVF_EMPLOYEE , dans le schéma dbo, qui prend la désignation de l’employé comme paramètre et retourne l’enregistrement d’employé.

public partial class TableValuedFunctions_dboClient : System.ServiceModel.ClientBase<TableValuedFunctions_dbo>, TableValuedFunctions_dbo {      
    public schemas.microsoft.com.Sql._2008._05.Types.TableFunctionReturnTables.dbo.TVF_EMPLOYEE[] TVF_EMPLOYEE(string emp_desig);  
}  

Dans cet extrait de code, TableValuedFunctions_dboClient est le nom de la classe WCF dans le fichier SqlAdapterBindingClient.cs généré par le plug-in Add Adapter Service Reference.

Paramètres pour l’appel de fonctions table

Les paramètres des méthodes exposées par l’adaptateur SQL pour appeler une fonction table sont les mêmes que les paramètres définis dans la définition de fonction dans SQL Server. Par exemple, le paramètre d’appel de la fonction table TVF_EMPLOYEE est emp_desig et prend la désignation d’un employé.

Là encore, la valeur de retour d’une fonction table est identique à la valeur de retour définie dans la définition de fonction dans SQL Server. Par exemple, la valeur de retour de la fonction TVF_EMPLOYEE est un tableau d’enregistrements de type schemas.microsoft.com.Sql._2008._05.Types.TableFunctionReturnTables.dbo.TVF_EMPLOYEE[].

Création d’un client WCF pour appeler des fonctions table

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 explique comment créer un client WCF pour appeler la fonction table TVF_EMPLOYEE .

  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 fonction scalaire TVF_EMPLOYEE . 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 Artefacts.

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

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

    
              TableValuedFunctions_dboClient client = new TableValuedFunctions_dboClient("SqlAdapterBinding_TableValuedFunctions_dbo");  
    client.ClientCredentials.UserName.UserName = "<Enter user name here>";  
    client.ClientCredentials.UserName.Password = "<Enter password here>";  
    

    Dans cet extrait de code, TableValuedFunctions_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_TableValuedFunctions_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 Service Reference 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 puis de lier le 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 fonction TVF_EMPLOYEE pour récupérer tous les enregistrements d’employés ayant la désignation « Manager ».

    Console.WriteLine("Invoking the TVF_EMPLOYEE function");  
    schemas.microsoft.com.Sql._2008._05.Types.TableFunctionReturnTables.dbo.TVF_EMPLOYEE[] emp_details;  
    string emp_designation = "Manager";  
    
    try  
    {  
        emp_details = client.TVF_EMPLOYEE(emp_designation);  
    }  
    catch (Exception e)  
    {  
        Console.WriteLine("Exception: " + e.Message);  
        throw;  
    }  
    Console.WriteLine("The details for the employee with the 'Manager' designation are:");  
    Console.WriteLine("*******************************************************************");  
    for (int i = 0; i < emp_details.Length; i++)  
    {  
        Console.WriteLine("Employee ID        : " + emp_details[i].Employee_ID);  
        Console.WriteLine("Employee Name      : " + emp_details[i].Name);  
        Console.WriteLine("Employee Desigation: " + emp_details[i].Designation);  
        Console.WriteLine("Employee Salary    : " + emp_details[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. L’application affiche l’ID, le nom et le salaire de tous les employés avec la désignation « Manager ».

Voir aussi

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