Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si richiama una procedura elencata nel nodo Strongly-Typed Procedure nel plug-in Aggiungi riferimento al servizio adapter, l'output è presentato sotto forma di set di risultati fortemente tipizzato. In questo argomento vengono fornite istruzioni su come creare un client WCF per richiamare stored procedure in SQL Server che restituiscono un set di risultati fortemente tipizzato.
Annotazioni
Se si esegue un'operazione sulle tabelle con colonne di tipi definiti dall'utente, assicurarsi di fare riferimento a Operazioni su tabelle e viste con tipi di User-Defined prima di iniziare a sviluppare l'applicazione.
Informazioni sugli esempi usati in questo argomento
Nell'esempio di questo argomento viene utilizzata la stored procedure GET_EMP_DETAILS. Questa stored procedure accetta un ID dipendente come parametro di input e restituisce tutte le colonne corrispondenti per il dipendente con tale ID. La procedura memorizzata GET_EMP_DETAILS viene creata eseguendo lo script SQL fornito con gli esempi. Per altre informazioni sugli esempi, vedere Esempi di adapter. Un esempio, Execute_TypedStoredProcedure, basato su questo argomento, viene fornito anche con gli esempi dell'adapter SQL.
Classe WCF client
Il nome del client WCF generato per richiamare le stored procedure nel nodo Strongly-Typed Procedures tramite l'adapter SQL è elencato nella tabella seguente.
| Artefatto del database di SQL Server | Nome client WCF |
|---|---|
| Procedura (nel nodo Strongly-Typed Procedures) | TypedProcedures_[schema]Client |
[schema] è lo schema a cui appartiene la procedura; ad esempio "dbo".
Firma del metodo per richiamare stored procedure
Nella tabella seguente viene illustrata la firma del metodo esposto per invocare le stored procedure.
| Operazione | Firma del metodo |
|---|---|
| Nome della procedura | [PROC_NS] [procedure_name](param1, param2, ...) |
[PROC_NS] è lo spazio dei nomi delle procedure; ad esempio schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[]
[procedure_name] è il nome della procedura; ad esempio GET_EMP_DETAILS
Ad esempio, la firma per il metodo per richiamare la routine GET_EMP_DETAILS è illustrata nel frammento di codice seguente.
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);
}
In questo frammento di codice,
TypedProcedures_dboClientè il nome della classe . In questo esempio si usa questa classe per creare un client per richiamare la stored procedure.public schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[] GET_EMP_DETAILS(System.Nullable<int> emp_id, out int ReturnValue)è il metodo richiamato in questo esempio per richiamare la stored procedure. Questa stored procedure accetta un ID dipendente e restituisce un set di risultati fortemente tipizzato.
Creazione di un client WCF per richiamare una stored procedure in SQL Server
Il set generico di azioni necessarie per eseguire un'operazione in SQL Server tramite un client WCF include un set di attività descritte in Panoramica del modello di servizio WCF con l'adapter SQL. In questa sezione viene descritto in modo specifico come creare un client WCF che richiama una stored procedure, il cui set di risultati è fortemente tipizzato. In questo argomento, ad esempio, si richiama la procedura memorizzata GET_EMP_DETAILS. La stored procedure viene creata eseguendo lo script SQL fornito con ogni esempio.
Creare un progetto Visual C# in Visual Studio. Per questo argomento, creare un'applicazione console.
Genera la classe client WCF per la procedura memorizzata GET_EMP_DETAILS. Assicurarsi di selezionare la procedura nel nodo Strongly-Typed Procedure . Per altre informazioni sulla generazione di una classe client WCF, vedere Generare un client WCF o un contratto di servizio WCF per gli artefatti di SQL Server.
Importante
Prima di generare la classe client WCF, assicurarsi di impostare la proprietà di associazione EnableBizTalkCompatibilityMode su false.
In Esplora soluzioni aggiungere un riferimento a
Microsoft.Adapters.SqleMicrosoft.ServiceModel.Channels.Aprire il file Program.cs e creare un client come descritto nel frammento di codice seguente.
TypedProcedures_dboClient client = new TypedProcedures_dboClient("SqlAdapterBinding_TypedProcedures_dbo"); client.ClientCredentials.UserName.UserName = "<Enter username here>"; client.ClientCredentials.UserName.Password = "<Enter username here>";Il
TypedProcedures_dboClientin questo frammento di codice è il client WCF definito in SqlAdapterBindingClient.cs. Questo file viene generato dal componente aggiuntivo Aggiungi riferimento al servizio adattatore.SqlAdapterBinding_TypedProcedures_dboè il nome della configurazione dell'endpoint client ed è definito nel app.config. Questo file viene generato anche dal plug-in Add Adapter Service Reference e contiene le proprietà di associazione e altre impostazioni di configurazione.Annotazioni
In questo frammento di codice si usano il binding e l'indirizzo dell'endpoint dal file di configurazione. È anche possibile specificare in modo esplicito questi valori nel codice. Per altre informazioni sui diversi modi per specificare l'associazione client, vedere Configurare un'associazione client per l'adapter SQL.
Aprire il client come descritto nel frammento di codice seguente:
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }Richiamare la procedura memorizzata GET_EMP_DETAILS come descritto nel frammento di codice riportato di seguito.
// 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("*************************************************");Chiudere il client come descritto nel frammento di codice seguente:
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();Compilare il progetto e quindi eseguirlo. Il nome, la designazione e lo stipendio per l'ID dipendente vengono visualizzati nella console.