Appeler des fonctions scalaires 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 scalaires dans SQL Server. L’adaptateur expose les fonctions scalaires en tant que 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 scalaires dans SQL Server à l’aide de l’adaptateur SQL.
Comment cette rubrique illustre l’appel de fonctions scalaires à l’aide du modèle de service WCF
Cette rubrique montre comment appeler la fonction GET_EMP_ID dans une base de données SQL Server. La fonction GET_EMP_ID prend la désignation d’un employé dans la table Employee et retourne l’ID d’employé correspondant. La fonction GET_EMP_ID 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 scalaire GET_EMP_ID sur la table Employee. La fonction GET_EMP_ID et la table Employee sont créées en exécutant le script SQL fourni avec les exemples. Un exemple, ScalarFunction_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 scalaire | ScalarFunctions_[SCHEMA]Client |
[SCHEMA] = Collection d’artefacts SQL Server ; par exemple, dbo.
Signature de méthode pour l’appel de fonctions scalaires
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 scalaire | public< return_type><scalar_function_name>(param1, param2, ...) |
<> retrun_type = Type de retour défini dans la définition de fonction
<> scalar_function_name = Nom de la fonction scalaire.
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 GET_EMP_ID , dans le schéma dbo, qui prend la désignation de l’employé en tant que paramètre et retourne un ID d’employé (entier).
public partial class ScalarFunctions_dboClient : System.ServiceModel.ClientBase<ScalarFunctions_dbo>, ScalarFunctions_dbo {
public System.Nullable<int> GET_EMP_ID(string emp_desig);
}
Dans cet extrait de code, ScalarFunctions_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 scalaires
Les paramètres des méthodes exposées par l’adaptateur SQL pour appeler une fonction scalaire sont les mêmes que les paramètres définis dans la définition de la fonction scalaire dans SQL Server. Par exemple, le paramètre d’appel de la fonction scalaire GET_EMP_ID est emp_desig et prend la désignation d’un employé.
Là encore, la valeur de retour d’une fonction scalaire est identique à la valeur de retour définie dans la définition de fonction scalaire dans SQL Server. Par exemple, la valeur de retour de la fonction GET_EMP_ID est l’ID d’un employé de type entier.
Création d’un client WCF pour appeler des fonctions scalaires
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 scalaire GET_EMP_ID .
Pour créer un client WCF
Créez un projet Visual C# dans Visual Studio. Pour cette rubrique, créez une application console.
Générez la classe de client WCF pour la fonction scalaire GET_EMP_ID . 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.
Dans le Explorateur de solutions, ajoutez une référence à
Microsoft.Adapters.Sql
etMicrosoft.ServiceModel.Channels
.Ouvrez Program.cs et créez un client comme décrit dans l’extrait de code ci-dessous.
ScalarFunctions_dboClient client = new ScalarFunctions_dboClient("SqlAdapterBinding_ScalarFunctions_dbo"); client.ClientCredentials.UserName.UserName = "<Enter user name here>"; client.ClientCredentials.UserName.Password = "<Enter password here>";
Dans cet extrait de code,
ScalarFunctions_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_ScalarFunctions_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.
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; }
Appelez la fonction GET_EMP_ID pour récupérer l’ID d’un employé avec la désignation « Manager ».
Console.WriteLine("Invoking the GET_EMP_ID function"); string emp_designation = "Manager"; try { System.Nullable<int> emp_id = client.GET_EMP_ID(emp_designation); Console.WriteLine("The Employee ID for the employee with 'Manager' designation is:" + emp_id); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); throw; }
Notes
Par souci de simplicité, la table Employee n’a qu’un seul employé avec la désignation « Manager ». Si votre table cible a plus d’employés avec la même désignation, vous devez définir la fonction en conséquence.
Fermez le client comme décrit dans l’extrait de code ci-dessous :
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();
Générez le projet, puis exécutez-le. L’application affiche l’ID d’employé de l’employé avec la désignation « Manager ».
Voir aussi
Développer des applications en utilisant le modèle de service WCF