LINQ To SQL3
La più grande feature di LINQ è sicuramente la possibilità di poter fare query sul db.
Il primo passo per fare questo consiste nel modificare la classe Persona al fine di mappare le sue proprietà con la tabella nel Database.
[Table(Name="Persona")]
public class Persona{
[Column]
public string Nome { get; set; }
[Column]
public string Cognome { get; set; }
[Column]
public int Eta { get; set; }
[Column]
public string Citta { get; set; }
}L'attributo Table serve a specificare a quale tabella del db corrisponde la classe, mentre Column serve a mappare le proprietà con i campi. L'attributo Column ha diverse proprietà per regolare il mapping, come la possibilità di accettare valori nulli, di specificare esplicitamente il nome della colonna del db (se non specificata viene ricercata la colonna con lo stesso nome della proprietà), di impostare quale colonna fa da PrimaryKey e altro ancora. Il secondo step consiste nel creare una stringa di connessione all'interno del file web.config.
<connectionStrings>
<add name="DBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>Infine si scrive il codice per estrapolare i dati dalla tabella.
var db = new DataContext(ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString);
var result = db.GetTable<Persona>();
GridView1.DataSource = result;
GridView1.DataBind();Innanzitutto viene creato un contesto attraverso la classe DataContext, e poi vengono direttamente estratti tutti i dati della tabella Persona sul db e caricati in una lista di oggetti Persona seguendo il mapping impostato sulla classe.
Se invece si vuole lanciare una query per filtrare i dati, basta fornire la solita sintassi LINQ.
var db = new DataContext(ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString);
var result = db.GetTable<Persona>();
var query = from p in result
where p.Citta == "Roma"
select p;Analizzando il codice, si potrebbe essere portati a pensare che i dati vengano estratti interamente dal DB e poi filtrati in memoria. In realta non è così, poichè il metodo GetTable ottiene solo un riferimento alla tabella, la query reale viene eseguita in un secondo momento, nello scorrere la variabile query.
LINQ non si ferma alla sola lettura dei dati, ma ne permette anche l'aggiornamento. Con Visual Studio, si può aggiungere al progetto un file di tipo LINQ To SQL, il quale lancia un editor che permette di trascinare dentro le tabelle di un database creando anche automaticamente le classi relative. Inoltre questo editor crea una classe che deriva da DataContext e che permette l'accesso tipizzato ai dati.
var db = new DBDataContext(ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString);
var query = from p in db.Personas
where p.Citta == "Roma"
select p;
db.Personas.Add(new Persona { Nome = "Andrea", Cognome = "Zani", Citta = "Bergamo", Eta = 35 });
db.SubmitChanges();E' importante sottolineare che la proprietà Personas viene generata automaticamente dall'editor. Come si vede nell'esempio, aggiornare i dati è estremamente semplice: basta agire sulla proprietà che rappresenta la tabella nel DataContext, specificando l'oggetto da aggiungere o rimuovere, e chiamare il metodo SubmitChanges.
Contenuti dell'articolo
- Pagina 1
- Pagina 2
- Pagina 3
- Pagina 4
- Pagina 5
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Difficoltà
Utilità
Stampa
Download 



