Ciao,
reggiti forte e cerca di seguirmi, provo a raccontarti più o meno tutta la storiella

Allora... se tutti gli articoli avessero un solo autore, la classe Article avrebbe una
proprietà di tipo Author e il caso sarebbe molto simile a quello di
e più precisamente avresti qualcosa come
Author myAuthor = new Author();
author.Name = "Marco De Sanctis";
article.Author = myAuthor;
Semplice vero? Tra l'altro accade già una cosa simpatica: nulla vieta infatti che lo stesso autore scriva più articoli, no? Basta che due articoli puntino alla stessa classe Author.. ciò che abbiamo realizzato si chiama
associazione molti-a-uno e fa il paio con la tradizionale foreign key sul database.
Se però un articolo può essere scritto da più autori, una semplice proprietà non ci va più bene, giusto? ecco perchè in questo caso ci sarà bisogno di una
collection, in prima approssimazione una collection di Author, a cui dovremo
aggiungere l'autore appena creato affinchè questo possa farne parte:
Author myAuthor = new Author();
author.Name = "Marco De Sanctis";
article.Authors.Add(myAuthor);
Questo è il caso di una
associazione molti-a-molti, dato che un articolo può essere scritto da più autori e un autore può scrivere più articoli. Perfetto, se mi hai seguito fin qui ci siamo quasi... manca giusto l'ultimo passaggio. Nel mondo a oggetti tutto ciò che abbiamo scritto sembra funzionare perfettamente, ma su database è tutto un altro paio di maniche, tant'è che per memorizzare l'associazione tra articolo e i relativi autori abbiamo bisogno di una terza tabella, ArticoliAutori, che tenga traccia delle varie associazioni. Con LINQ to Sql, pertanto, siamo costretti a creare anche una ulteriore classe, che è un po' alter ego di questa tabella, che chiameremo ArticleAuthor. Di riflesso, quindi, Article avrà la sua bella proprietà ArticleAuthors (bravo, indovinato, sempre di tipo
collection), in luogo della precedente Author
s. A questo punto il codice si complica di pochissimo e diventa
// creo l'autore
Author myAuthor = new Author();
author.Name = "Marco De Sanctis";
// creo l'associazione
ArticleAuthor articleAuthor = new ArticleAuthor();
articleAuthor.Author = myAuthor;
// aggiungo finalmente l'associazione alla collezione di autori dell'articolo
myArticle.ArticleAuthors.Add(articleAuthor);
Spero di averti chiarito qualche dubbio, in caso contrario son qui
