> 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 iTPro - 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 gratuitement cette ressource

IBMi et Cloud : Table ronde Digitale

IBMi et Cloud : Table ronde Digitale

Comment faire évoluer son patrimoine IBMi en le rendant Cloud compatible ? Comment capitaliser sur des bases saines pour un avenir serein ? Faites le point et partagez l'expertise Hardis Group et IBM aux côtés de Florence Devambez, DSI d'Albingia.

Tech - Par iTPro - Publié le 23 avril 2012