Name ID var requete = from c in clients where c.Ville == “Genève" select c.Nom; var requete = clients.Where(c => c.Ville == “Genève").Select(c => c.Nom); Select c => c.Nom string[] noms = requete.ToArray(); noms c => c.Ville == "London" Where
SqlCommand cmd = new SqlCommand( @"SELECT c.Nom, c.Telephone FROM Clients c WHERE c.Ville = @p0"); cmd.Parameters.AddWithValue("@p0", “Genève“); DataReader dr = c.Execute(cmd); while (dr.Read()) { string nom = dr.GetString(0); string telephone = dr.GetString(1); DateTime date = dr.GetDateTime(2); } dr.Close(); Accès au données, aujourd’hui Requête entre guillemets Arguments faiblement liés Resultats non typés Pas de contrôle de la part du compilateur
public class Northwind: DataContext { public Table<Client> Clients; … } Northwind db = new Northwind(…); var contacts = from c in db.Clients where c.Ville == “Genève" select new { c.Nom, c.Telephone }; Accès au données avec DLinq Données décrites par des classes Connections fortement typées Syntaxe de requête intégrée Résultats fortement typés Tables comme collections
tables et lignes a classes et objets Utilise ADO.NET et System.Transactions Correspondances Codifiées par attributs Les relations correspondent à des propriétés Persistance Management automatique des changements Mises à jour à travers de SQL ou des stored procedures DLinq pour Données Relationnelles
c in clients where c.Pays == "CH" select new XElement("contact", new XElement("nom", c.Nom), new XElement("telephone", c.Telephone) ) ); Développer XML avec XLinq Model déclaratif Centré sur les éléments Requêtes intégrées Plus petit et plus rapide
langage Toute la puissance de XPath / XQuery Mais avec C# ou VB comme langage Basé sur l’expérience DOM Centré sur les éléments, pas sur le document Construction fonctionnelle Les nodes de texte sons simplement des strings Support pour namespaces XML simplifié Plus petit et plus rapide
Langage de requête natif pour C# 3.0 et VB 9.0 Opérateurs de requête standards Requêtes similaires à SQL pour toute collection .NET DLinq « Query enabled data access framework » XLinq Query enabled, smaller, faster XML DOM
dire: échec Politiquement: investissements déjà faits en modèles relationnels Techniquement: Problèmes de réutilisation Interfaces: ODBC, JDBC, ADO.NET… Reproduction d’une base de données en mémoire SQL éparpillé dans le code Requêtes ou appels à des stored procedures
non accepté dans l’environnement corporate Peu de contrôle Embedded SQL (SQLJ) Variante de Java Pas trop diffusée LINQ vs. “les autres” #sql public iterator CustomerIter (int, String, String); // Declare and initialize host variables int id=0; String name=null; String city=null; // Declare an iterator instance CustomerIter custs; #sql custs = { SELECT CustomerId, CompanyName, City FROM Customers }; while (true) { #sql { FETCH :custs INTO :id, :name, :city }; if (custs.endFetch()) break; // Use id, name, city } custs.close();
Elévation de requêtes et relations au niveau classes et objets « Type safety » et vérification statique de types Seulement pour SQL Server Pour le moment
données relationnelles et XML Vérification de types et Intellisense pour les requêtes Le pouvoir de SQL et XQuery directement dans C# et VB Extensibilité pour d’autres langages ou APIs http://msdn.microsoft.com/netframework/future/linq/
Office release Notifications upon availability of new beta versions of to download or order them as soon as possible Product-specific bonus material (videos, samples, webcasts, gadgets, etc.) Your benefits: