SubSonic Resource Center

Utilizzare LINQ con Visual Web Developer Express 2008

Introduzione
L'articolo illustra tutti i passi necessari per integrare LINQ in un progetto creato con Visual Web Developer Express 2008. Si concentra in particolar modo su "LINQ To SQL", implementazione del .NET Framework che consente di creare e mappare tramite l'utilizzo di classi il Data Access Layer per l'accesso alla base dati.


Requisiti
Tutti i software qui elencati sono gratuiti.

Microsoft Visual Web Developer 2008 Express.
Link: http://www.microsoft.com/express/download/

Microsoft SQL Server 2005 Express.
Link: http://www.microsoft.com/express/sql/download/default.aspx

Microsoft SQL Server Management Studio Express (facoltativo).
Link: http://www.microsoft.com/express/sql/download/default.aspx

Subsonic (versione attuale: 2.1.0 beta 2).
Link: http://www.codeplex.com/subsonic/Release/ProjectReleases.aspx?ReleaseId=5636


Codice di esempio allegato
E' possible scaricare a questo link il codice di esempio allegato all'articolo.


Creazione del dbml
Con l'introduzione di LINQ nel .NET Framework Microsoft ha messo a disposizione dell'utente un tool a riga di comando che consente di creare il dbml (file intermedio per la customizzazione del database) e il file di mapping senza dover necessariamente utilizzare la versione Professional di Visual Studio 2008. Si tratta del file "SqlMetal.exe", presente nella cartella "C:\Programmi\Microsoft SDKs\Windows\v6.0A\bin".
Partiamo da una semplice base dati:


Assicuriamoci che il nostro database sia presente tra quelli in elenco mostrati su SQL Server Management Studio Express (vedi fig. 2):


Da console (cmd) posizioniamoci nella cartella "C:\Programmi\Microsoft SDKs\Windows\v6.0A\bin" e digitiamo il seguente comando:

sqlmetal /server:.\SQLEXPRESS /database:ss_ita_demo /dbml:linqdemo.dbml /namespace:linqdemo


A seguito del commando viene creato il file intermedio linqdemo.dbml nella stessa cartella del tool "sqlmetal". Preleviamo con operazione di copia/incolla il suddetto file dbml e spostiamolo nella cartella "App_code" del nostro progetto creato con Visual Web Developer Express 2008.


Creazione del mapping dal dbml
Apriamo il nostro progetto con VWD Express 2008 e nel riquardo "Solution Explorer" individuiamo il file "linqdemo.dbml", presente nella cartella "App_code". Apriamolo col doppio click e nel riquadro che mostra tabelle e vincoli clicchiamo col destro in una zona vuota (fig. 3) e scegliamo la voce "Proprietà" dal menu contestuale.


Nel riquadro "Properties" individuiamo la voce "Connection" e assegniamo il valore "ss_ita_demo.mdf" presente nel menu a cascata. Salviamo la modifica apportata al file linqdemo.dbml.
Fatto questo, nel riquadro "Solution Explorer" clicchiamo col destro sul file "linqdemo.dbml" e scegliamo la voce "Run custom tool".
Il nostro file di mapping è adesso pronto per l'utilizzo.


Inclusione nel progetto della dll di LINQ
Perché tutto funzioni è necessario inserire nel progetto il riferimento alla DLL "System.Data.Linq". Nel riquadro "Solution Explorer" cliccare col destro sulla radice del progetto (prima riga) e dal menu contestuale scegliere la voce "Add reference". Selezionare il file "System.Data.Linq" e confermare la scelta.
Vediamo adesso un po' di codice.


Un primo esempio: LINQ all'opera
Ecco un esempio di inserimento dati:

linqdemo.Ss_ita_demo insdb = new linqdemo.Ss_ita_demo();
linqdemo.Prodotti prodToIns = new linqdemo.Prodotti();

prodToIns.Descrizione = tbDescr.Text;
prodToIns.Quant_per_unit = Convert.ToInt32(tbQuant.Text);
prodToIns.Prezzo_unit = Convert.ToDecimal(tbPrezUnit.Text);
prodToIns.Units_in_stock = Convert.ToInt32(tbUnitInMag.Text);
 

insdb.Prodotti.InsertOnSubmit(prodToIns);
insdb.SubmitChanges();


Il codice è estremamente lineare: si creano l'oggetto database e l'oggetto che si riferisce alla tabella su cui inserire il dato; si valorizzano le opportune proprietà e poi si lancia il comando che si occupa di salvare i dati come record nella tabella a cui l'oggetto fa riferimento.
Vediamo adesso un esempio di cancellazione dati:

linqdemo.Ss_ita_demo deldb = new linqdemo.Ss_ita_demo();
var
del_prodotti = from p in deldb.Prodotti where p.Id_prodotto.Equals(Convert.ToInt32(id_prodotto.Text))
                              
select p;

deldb.Prodotti.DeleteAllOnSubmit(del_prodotti);
deldb.SubmitChanges();


In questo caso viene creata una vera e propria interrogazione, che consente di individuare univocamente il record da eliminare. Fatto questo, si utilizza il metodo dell'oggetto relativo all'eliminazione dati, e il gioco è fatto.
La modifica è simile all'inserimento, ma prevede un'estrazione preliminare dei dati che vengono mostrati a video nelle relative caselle di testo.
Per un esempio completo ed esaustivo si raccomanda di fare riferimento al progetto di esempio allegato.


Conclusioni
L'articolo ha voluto dimostrare come sia estremamente semplice includere LINQ in una web application creata con la versione Express di Visual Studio (quindi a costo zero), e come sia altrettanto immediato l'utilizzo dello stesso per interagire con la base dati.



  Pagina 1 di 1


<< September 2010 >>
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30  

ultimi inserimenti

archivi

informazioni

  • Numero di visite: 

salta a...

Youngportal community  Omniaproject  Open asp.net  Forum  Rss feed