Au préalable, il faut intégrer une référence
à l'assemblage System.Data.
|
//
// D'après les expérimentations de Jean-Noël Guilbault
//
//Documentation :
//
/*
* IMPORTANT : Les exemples sur MSDN utilisent un constructeur de DataContext exclusif à SQLServer, on doit donc remplacer la ligne :
*
* DataContext db = new DataContext
* ("c:\\...\\TestBD.mdb");
*
* par :
*
* IDbConnection connection = new System.Data.OleDb.OleDbConnection
* ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\...\\TestBD.mdb;");
* connection.Open();
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//
// À AJOUTER!!!
//
using System.Data;
using System.Data.Linq; // << Pour DataContext; ajouter une référence sur l'assemblage du même nom
using System.Data.Linq.Mapping; // << pour les balises [Table] et [Column]
//
// L'exemple qui suit présume une base de données Test.mdb (format Access 2003) contenant une table Livres,
// laquelle utilise au moins un champ Id (une clé primaire) et un champ Titre (du texte).
//
namespace ExempleLinqAccess
{
|
Ensuite, de petites classes servant de représentation interne
pour chaque élément pertinent de la
BD dans le programme doivent être définies.
|
// ...
//
// On commence par implanter une class conteneur pour recevoir les données d'une table. Bien que la
// classe serve d'abord de conteneur, il est parfaitement légal d'inclure variables, méthodes et autres
//
[Table(Name = "Livres")] // << Le nom est le nom exact de la table, ce qui permet d'avoir un nom de classe différent.
public class Livre
{
[Column(IsPrimaryKey = true)] // << Une balise Column pour chaque variable correspondante à une colonne.
public int Id;
[Column]
public string Titre;
}
|
Par la suite, le travail est relativement simple...
|
// ...
class Program
{
static void Main(string[] args)
{
IDbConnection connexion = new System.Data.OleDb.OleDbConnection
("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Mr_Roy\\Code\\Code C#\\420KEL\\ExempleLinqAccess\\ExempleLinqAccess\\bin\\Debug\\Test.mdb;");
connexion.Open();
DataContext db = new DataContext(connexion);
//
//On peut demander au DataContext d'envoyer ses logs à l'écran.
// db.Log = Console.Out; // << pour débugger
//
Table<Livre> livres = db.GetTable<Livre>();
//
// Aller chercher tous les éléments de la table.
//
IQueryable<Livre> LivreQuery =
from Bouqins in livres
select Bouqins;
foreach (Livre bouqin in LivreQuery)
Console.WriteLine("Id: {0}, Titre: \"{1}\"", bouqin.Id, bouqin.Titre);
//
// Une petite patch pour empêcher la console de se fermer par elle-même...
//
Console.ReadLine();
}
}
}
|