> Tech > Linq to SQL : Ajout de tables et création des relations

Linq to SQL : Ajout de tables et création des relations

Tech - Par Renaud ROSSET - Publié le 23 avril 2012
email

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

Guide de technologie 5G pour l’entreprise

Guide de technologie 5G pour l’entreprise

Pourquoi la 5G est-elle faite pour votre entreprise ? La 5G peut améliorer la vitesse, la fiabilité et la capacité de votre réseau, permettant ainsi une meilleure collaboration, une productivité accrue et une prise de décision plus rapide. Notre livre blanc " The Big Book of Enterprise 5G" vous fournit les informations stratégiques dont vous avez besoin pour prendre des décisions éclairées et préparer votre entreprise à prospérer dans l'ère de la 5G. Cradlepoint, part of Ericsson est le leader mondial des solutions de réseau sans fil 4G LTE et 5G fournies via le cloud. Connectez vos employés, lieux et objets avec la 4G LTE et la 5G pour un WAN sans fil d'entreprise.

Tech - Par Renaud ROSSET - Publié le 23 avril 2012