Popolare le collection
Negli esempi visti finora, si è fatto uso degli oggetti creati in automatico da Visual Studio. Ma se volessimo utilizzare LINQ To SQL in un nostro progetto già consolidato con sue entità, come ci dovremo comportare? Possiamo riscrivere il DAL della nostra applicazione. Per puro scopo didattico, ho creato queste classi per rappresentare il contenuto delle tabelle trattate finora (qui solo in C# per questioni di spazio):
public class Article
{
public int Id { get; set; }
public string Code { get; set; }
public TypeArticle TypeA { get; set; }
public IList<Author> Authors { get; set; }
}
public class TypeArticle
{
public int Id { get; set; }
public string Description { get; set; }
}
public class Author
{
public int Id { get; set; }
public string AuthorName { get; set; }
}Nella DAL per caricare tutto il contenuto delle tabelle in queste classe, possiamo scrivere utilizzando la sintassi di LINQ (con il pieno supporto dell'intellisense in Visual Studio):
// C#
ExampleDataContext e = new ExampleDataContext();
var coll = from a in e.articles
select new Article
{
Id = a.id,
Code = a.code,
TypeA = (from t in e.article_types
where t.id == a.id_type
select new TypeArticle
{
Id=t.id,
Description=t.description
}).ToList<TypeArticle>()[0],
Authors=(from aa in e.articlesauthors
join aax in e.authors on aa.id_author equals aax.id
where aa.id_article==a.id
select new Author
{
Id=aax.id,
AuthorName=aax.author1
}).ToList<Author>()
};
List<Article> ars = coll.ToList<Article>();
' VB
Dim e As New ExampleDataContext
Dim coll = From a In e.articles _
Select New DLINQTEST2.Article With { _
.Id = a.id, _
.Code = a.code, _
.TypeA = (From t In e.article_types Where t.id = a.id_type _
Select New DLINQTEST2.TypeArticle With { _
.Id = t.id, _
.Description = t.description _
}).First(), _
.Authors = (From aa In e.articles_authors _
Join aa2 In e.authors _
On aa.id_author Equals aa2.id _
Where aa.id_article = a.id _
Select New DLINQTEST2.Author With { _
.Id = aa2.id, _
.AuthorName = aa2.author _
}).ToList() _
}
Dim ars As List(Of DLINQTEST2.Article) = coll.ToList()Per la visualizzazione è sufficiente questo codice:
//C#
foreach (var q in ars)
{
Console.WriteLine("-> {0} {1}", q.Code, q.TypeA.Description);
foreach (var qq in q.Authors)
{
Console.WriteLine("---> {0}", qq.AuthorName);
}
}
' VB
Dim q, qq
For Each q In ars
Console.WriteLine("-> {0} {1}", q.Code, q.TypeA.Description)
For Each qq In q.Authors
Console.WriteLine("---> {0}", qq.AuthorName)
Next
NextConclusioni
Questo articolo voleva essere solo un assaggio delle potenzialità di Visual Studio 2008 e di "LINQ To SQL". L'editor di Visual Studio 2008 permette la personalizzazione dell'oggetto DataContext in molti dettagli. E' possibile creare anche completamente da zero le proprie classi e il mapping con il nome dei campi, così come le relazioni tra tabelle e il tipo di dati.
Per chi ama lo sviluppo di entità non collegate con mapping diretto di campi con le proprietà e l'utilizzo di un ORM come Nhibernate, troverà l'uso di LINQ To SQL limitato e dovrà attendere il rilascio di "ADO.NET Entity Framework".
Lo speciale completo su Visual Studio 2008, Windows Server 2008 e SQL Server 2008
- .NET Framework 3.5 e Visual Studio 2008: cosa c'è di nuovo di Riccardo Golia
- Le novità di C# 3.0 e Visual Basic 9.0 attraverso LINQ di Stefano Mostarda
- Introduzione a LINQ, LINQ to XML, Object e DataSet di Stefano Mostarda

- Introduzione ad ASP.NET 3.5: novità e caratteristiche di Daniele Bochicchio
- Introduzione ad ASP.NET 3.5 di Daniele Bochicchio

- Le novità di Communication e Workflow Foundation e la loro cooperazione nel .NET Framework 3.5 di Cristian Civera
- Windows Presentation Foundation 3.5: 3D interattivo e le altre novità del framework di Marco Leoncini
- Utilizzare Visual Studio 2008 per semplificare lo sviluppo con LINQ to SQL di Andrea Zani
- Uno sguardo a LINQ to SQL di Stefano Mostarda

- Le nuove caratteristiche di IIS 7.0 per sviluppatori e sistemisti di Daniele Bochicchio, Christian Paparelli
- Gestire transazioni miste con NTFS in Windows Server 2008 di Ugo Lattanzi
- LINQ oltre SQL e XML: creare un provider per l'integrazione con Live Search di Alessandro Catorcini
- Tracciare le modifiche ai dati e allineare i datawarehouse con il Change Data Capture in SQL Server 2008 di Luca Bianchi
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 


