Utilizzare Visual Studio 2008 per semplificare lo sviluppo con LINQ to SQL

6 pagine in totale: <<Indietro 1 2 3 4 5 [6]

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
Next

Conclusioni

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

6 pagine in totale: <<Indietro 1 2 3 4 5 [6]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.


TUTORIALS


IN EVIDENZA
MISC