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.
È possibile usare l'adapter SQL in un'applicazione .NET usando il modello di servizio WCF per richiamare funzioni con valori di tabella in SQL Server. L'adapter espone le funzioni con valori di tabella come metodi che possono essere richiamati direttamente in SQL Server. Per altre informazioni sul modo in cui l'adapter supporta le funzioni scalari, vedere Eseguire funzioni Table-Valued in SQL Server tramite l'adapter SQL.
Questo argomento illustra come richiamare la funzione TVF_EMPLOYEE in un database di SQL Server. La funzione TVF_EMPLOYEE accetta la designazione di un dipendente nella tabella Employee e restituisce il record per il dipendente. La funzione TVF_EMPLOYEE e la tabella Employee vengono create eseguendo lo script SQL fornito con gli esempi. Per altre informazioni, vedere Esempi di adapter.
Informazioni sugli esempi usati in questo argomento
L'esempio in questo argomento ha richiamato la funzione con valori di tabella TVF_EMPLOYEE nella tabella Employee. TVF_EMPLOYEE funzione e la tabella Employee vengono creati eseguendo lo script SQL fornito con gli esempi. Un esempio, TableFunction_ServiceModel, basato su questo argomento, viene fornito anche con gli esempi dell'adapter SQL. Per altre informazioni, vedere Esempi di adapter.
Classe WCF client
Il nome del client WCF generato per richiamare la funzione scalare in SQL Server tramite l'adapter SQL è elencato nella tabella seguente.
| Artefatto del database di SQL Server | Nome client WCF |
|---|---|
| Funzione con valori di tabella | TableValuedFunctions_[SCHEMA]Client |
[SCHEMA] = Raccolta di artefatti di SQL Server; ad esempio dbo.
Firma del metodo per richiamare funzioni con valori di tabella
Nella tabella seguente vengono illustrate le firme del metodo per le operazioni di base in una tabella. Le firme sono uguali per una vista, ad eccezione del fatto che lo spazio dei nomi e il nome della vista sostituiscono quelli della tabella.
| Operazione | Firma del metodo |
|---|---|
| Nome della funzione con valori di tabella | public [NAMESPACE][FUNCTION_NAME][] [FUNCTION_NAME](param1, param2, ...) |
[NAMESPACE] = Il namespace, ad esempio, schemas.microsoft.com.Sql._2008._05.Types.TableFunctionReturnTables.dbo.TVF_EMPLOYEE
[FUNCTION_NAME] = Nome della funzione con valori di tabella.
Ad esempio, il codice seguente mostra le firme del metodo per una classe client WCF generata per le funzioni scalari TVF_EMPLOYEE , nello schema dbo, che accetta la designazione del dipendente come parametro e restituisce il record dipendente.
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);
}
In questo snippet, TableValuedFunctions_dboClient è il nome della classe WCF nel file SqlAdapterBindingClient.cs generato dal plug-in Aggiungi riferimento al servizio Adapter.
Parametri per richiamare funzioni con valori di tabella
I parametri per i metodi esposti dall'adapter SQL per richiamare una funzione con valori di tabella sono gli stessi dei parametri definiti nella definizione della funzione in SQL Server. Ad esempio, il parametro per richiamare la funzione con valori di tabella TVF_EMPLOYEE è emp_desig e accetta la designazione di un dipendente.
Anche in questo caso, il valore restituito per una funzione con valori di tabella è uguale al valore restituito definito nella definizione della funzione in SQL Server. Ad esempio, il valore restituito per la funzione TVF_EMPLOYEE è una matrice di record di tipo schemas.microsoft.com.Sql._2008._05.Types.TableFunctionReturnTables.dbo.TVF_EMPLOYEE[].
Creazione di un client WCF per richiamare funzioni con valori di tabella
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. Questa sezione descrive come creare un client WCF per richiamare la funzione TVF_EMPLOYEE con valori di tabella.
Creare un progetto Visual C# in Visual Studio. Per questo argomento, creare un'applicazione console.
Generare la classe client WCF per la funzione scalare TVF_EMPLOYEE . 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.
In Esplora soluzioni aggiungere un riferimento a
Microsoft.Adapters.SqleMicrosoft.ServiceModel.Channels.Aprire il Program.cs e creare un client come descritto nel frammento di codice seguente.
TableValuedFunctions_dboClient client = new TableValuedFunctions_dboClient("SqlAdapterBinding_TableValuedFunctions_dbo"); client.ClientCredentials.UserName.UserName = "<Enter user name here>"; client.ClientCredentials.UserName.Password = "<Enter password here>";Il
TableValuedFunctions_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_TableValuedFunctions_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 funzione TVF_EMPLOYEE per recuperare tutti i record dei dipendenti con la designazione "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(); }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. L'applicazione visualizza l'ID dipendente, il nome e lo stipendio di tutti i dipendenti con una designazione "Manager".