Inclure une deuxième table à la base de données et créer des relations.
Linq to SQL : Ajout de tables et création des relations
Ajout de tables
Jusqu’à présent, la base de données ne contenait qu’une seule table. Etendons cet exemple afin d’inclure une deuxième table liée appelée Review. Celle-ci inclut ReviewId, Comment et MovieId, qui sont liés au film faisant l’objet d’une revue. Dans le listing 2, vous allez noter que, outre la propriété MovieId, une propriété Movie est annotée avec l’attribut Association. Cela permet d’établir la relation entre les tables Review et Movie.
Création des relations
Outre le fait d’ajouter la classe Review, vous allez aussi ajouter une propriété Reviews à la classe Movie. Cela vous permettra de passer d’un film à ses revues correspondantes. De nouveau, la propriété Reviews, illustrée au listing 3, est annotée avec l’attribut Association. Vous allez aussi constater que comme partie intégrante du constructeur Movie, le champ reviews est instancié en tant que nouvel EntitySet et passe des références aux méthodes attachReview et detachReview. Ces méthodes veillent à ce que la relation entre Movie et Review soit établie ou supprimée correctement, lorsqu’une revue (Review) est ajoutée ou supprimée au niveau de Movie.
La seule chose restant à accomplir est d’ajouter la table Review à MovieDataContext :
public class MoviesDataContext : DataContext {
…
public Table<Review> Reviews;
}
Si vous ajoutez cette table et cette relation à une base de données existante, vous devrez appeler la méthode AddTable sur l’updater de base de données. Comme l’association pour lier la table est définie sur la table Review que vous ajoutez, il est inutile d’appeler aussi AddAssociation :
if (dbUpdater.DatabaseSchemaVersion < 3) {
dbUpdater.AddTable<Review>();
dbUpdater.DatabaseSchemaVersion = 3;
dbUpdater.Execute();
}
Voici maintenant un exemple simple qui illustre la création d’un film et de la revue correspondante :
var movie = new Movie() {Name = « Hall Pass »,
Year = 2011,
Synopsis = « Very funny movie »};
dc.Movies.InsertOnSubmit(movie);
var review = new Review() { Comment = « This is one of the funniest movies ever » };
movie.Reviews.Add(review);
dc.Reviews.InsertOnSubmit(review);
dc.SubmitChanges();
Autres techniques et limitations
Cet article a montré comment créer une base de données LINQ to SQL en commençant avec un ensemble de classes annotées. Une autre possibilité consiste à utiliser Visual Studio ou SQL Server Management Studio afin de créer une base de données SQL Server Compact et d’employer l’outil en ligne de commande SqlMetal, en vue de générer les classes correspondantes pour une utilisation au sein de votre application Windows Phone.
Vous avez aussi vu comment mettre à jour progressivement votre base de données LINQ to SQL afin de gérer de nouvelles colonnes et tables de données. Toutefois, l’updater est limité en ce sens qu’il ne peut pas servir à modifier ou supprimer des colonnes ou tables existantes. Pour modifier une colonne, vous devez ajouter une colonne de remplacement et migrer les données de la colonne existante vers la nouvelle. Même si la suppression de colonnes ou tables est impossible, vous devez supprimer toute donnée devenue inutile afin de réduire la taille de la base de données LINQ to SQL.
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Activer la mise en veille prolongée dans Windows 10
- Cybersécurité Active Directory et les attaques de nouvelle génération
- Une baie de stockage c’est quoi ?
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
Les plus consultés sur iTPro.fr
- Pourquoi les outils de sécurité ne suffisent plus face aux angles morts de la détection
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- L’analytique prédictive au service de la décarbonation en France
- Ofelia, ex-Bonitasoft, lance une solution d’orchestration IA agentique
Articles les + lus
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
Les coûts cachés des merge requests générées par l’IA
Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
À la une de la chaîne Tech
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
- Les coûts cachés des merge requests générées par l’IA
- Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
