Analizzare il codice SQL
Per accertarci delle operazioni svolte abbiamo due strade: il profiler del database ed il debug in VS 2008:

Automaticamente, il Framework crea il comando SQL corretto per la richiesta dei dati al database. Se utilizziamo un metodo alternativo, il "Profiler", potremo vedere con maggior dettaglio tutte le operazioni richieste al database:

Stored Procedures e LINQ To SQL in pratica
All'inizio di questo articolo si è parlato dell'uso diretto delle Stored Procedures grazie a LINQ To SQL. Trascinando quelle di nostro interesse, come nell'immagine seguente, vedremo come utilizzarle per richiedere i dati.
Ora possiamo richiedere la lista degli articoli con questo codice:
// C#
ExampleDataContext e = new ExampleDataContext();
var a = e.SelectAllArticles();
foreach (var a1 in a)
{
Console.WriteLine(a1.code);
}
' VB
Dim e As New ExampleDataContext
Dim a = e.SelectAllArticles()
Dim a1
For Each a1 In a
Console.WriteLine(a1.code)
NextUtilizzando gli "Anonymous Type", non è visibile il tipo di oggetto creato dalla funzione utilizzata. In questo caso, "a" viene istanziato con il tipo ISingleResult<SelectAllArticlesResult> (in VB ISingleResult(of SelectAllArticlesResult)). Il problema sta nel fatto che è stata creata una classe solo per contenere il risultato di questa funzione; possiamo ovviare a questo problema modificando le proprietà di questa funzione direttamente da VS2008. Selezionata la procedura, leggiamo la proprietà "Return type":

Lasciando la voce di default (Auto-generated Type), VS2008 creerà una classe apposita per contenere i dati ritornati dalla stored procedures come abbiamo visto nell'esempio precedente. Possiamo evitare questo comportamento modificando la proprietà nel modo seguente:

L'editor visualizza i tipi disponibili. Selezionato quello corretto, article, possiamo scrivere:
// C#
ExampleDataContext e = new ExampleDataContext();
ISingleResult<article> a = e.SelectAllArticles();
// var a=e.SelectAllArticles();
foreach (var a1 in a)
{
Console.WriteLine("* {0}",a1.code);
}
' VB
Dim e As New ExampleDataContext
Dim a As ISingleResult(of article) = e.SelectAllArticles()
' Dim a=e.SelectAllArticles()
Dim a1
For Each a1 In a
Console.WriteLine("* {0}",a1.code)
Next Tutti i casi visti finora, valgono anche per i controlli del Framework, per le Windows Application e per le Web Application. Popolare un GridView non cambia nulla:
// C#
// 1o esempio
ExampleDataContext e = new ExampleDataContext();
id_gridview.DataSource= from a in e.articles
select a;
id_gridview.DataBind();
// 2o esempio
ExampleDataContext e = new ExampleDataContext();
id_gridview.DataSource= e.SelectAllArticles();
id_gridview.DataBind();
' VB
' 1o esempio
Dim e As New ExampleDataContext
id_gridview.DataSource= from a in e.articles _
select a
id_gridview.DataBind()
// 2o esempio
Dim e As New ExampleDataContext
id_gridview.DataSource= e.SelectAllArticles()
id_gridview.DataBind()Contenuti dell'articolo
- Pagina 1
- Pagina 2
- Pagina 3
- Pagina 4
- Pagina 5
- Pagina 6
Per inserire un commento, devi registrarti alla nostra community.





Difficoltà
Stampa
Download 



