IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Linq To SQL intérêts


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut Linq To SQL intérêts
    Bonjour,

    ( C#, framework 3.5, VS 2008)

    J'ai à faire une présentation dans le cadre de mes études sur Linq to SQL, sachant que je travaille actuellement avec des DataSets typés.

    Seulement, malgré mes longues recherches j'ai vraiment du mal à dégager un intéret à cette technologie, ses points forts par rapport aux Datasets...

    J'ai cru comprendre que l'atout majeur de LINQ était de garder une même requete, un même "Fill", adaptable à plusieurs sources de données.
    Donc dans l'hypothèse ou ma base de données migre de SQL Server vers autre chose, mon code sera toujours viable tandis que ma requête stockée dans mon Dataset elle serait obsolète ??

    Je dois également la comparer à ses concurrentes, à savoir visiblement Hibernate.

    Tout ceci est encore très flou pour moi...

    Je vous remercie d'avance pour les précisions et réponses que vous pourriez m'apporter.

    Marc

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut Linq to Entities
    J'ai aussi la possibilité d'étudier Linq to Entities à la place de Linq to SQL mais j'ai les mêmes difficultés à assimiler ce concept....


    Encore merci d'avance, je suis au fond la ...!

  3. #3
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Je pense que tu auras la réponse à la plupart de tes questions ici, on en a débattu très récemment.

    Et c'est plutôt NHibernate en .Net, mais ce n'est pas forcément un "concurrent".

    Disons que tu as plusieurs approches :
    - Procédure stockées
    - Linq to SQL (pour moi sur la voie de l’obsolescence)
    - Linq to Entities (Entity Framework)
    - NHibernate
    - ...

    Qui se justifient en fonction de pas mal de critères :
    - Taille du projet
    - Volume et structure de la base données
    - Orientation performance forte ou faible
    - Délais/planning du projet
    - Compétence de l'équipe en SQL et/ou ORM
    - ...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Linq to SQL est un ORM, c'est à dire qu'il fait le lien entre un modèle objet (des classes) et un modèle physique de données (la base de données).

    Linq to SQL tire partie de Linq (Language INtegrated Query), une fonctionnalité de C# qui permet d'effectuer des requêtes sur des modèles objet. Linq to SQL convertit la requête C# "objet" en requête SQL, exécute la requête sur la base de données, et matérialise le résultat sous forme d'objets.

    Les DataSets typés n'ont pas grand chose à voir avec ça, malgré les apparences... Quand tu fais un Fill d'un DataSet, ça exécute une requête SQL prédéfinie (habituellement générée par le designer), et ça charge le résultat dans les DataTables. Ensuite tu travailles sur ces données en mémoire, et c'est seulement quand tu as fini de travailler dessus que tu appliques les changements à la base de données : c'est ce qu'on appelle le mode déconnecté.

    Avec Linq to SQL, on travaille en mode connecté. On manipule directement la base de données, pas une copie en mémoire des données. Ca s'utilise de façon beaucoup plus naturelle : ton code C# représente la requête qui sera exécutée en base (alors qu'avec un DataSet tu fais simplement appel à Fill, pour voir à quoi ça correspond il faut que tu ailles voir la définition du DataAdapter).

    Soit dit en passant, Linq to SQL est obsolète (ou en passe de le devenir ; il me semble que MS a annoncé que c'était abandonné) : il faut utiliser Entity Framework (aka Linq to Entities). Le principe est le même, mais il y a au moins 2 avantages importants :
    • ça peut marcher avec n'importe quel SGBD, pas seulement SQL Server ; il faut juste qu'il existe un provider Entity Framework pour ce SGBD, mais la plupart des éditeurs en fournissent un (Oracle est encore à la bourre, mais je crois qu'ils travaillent dessus)
    • on peut modéliser les données de façon beaucoup plus souple que dans Linq to SQL, notamment pour les associations N-N et l'héritage

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    Merci à vous.
    Après avoir consulté le post suggéré ainsi que vos remarques, j'en conclue que je vais plus m'orienter vers une présentation et une utilisation de Linq to Entities.

    Pour ma part ces informations très interessantes auraient méritées d'être un peu plus vulgarisées.

    Je n'ai en revanche pas trouvé de points forts par rapport à NHibernate..

    Merci

  6. #6
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Citation Envoyé par sheitancrew Voir le message
    Pour ma part ces informations très interessantes auraient méritées d'être un peu plus vulgarisées.
    Lesquelles ? Etant donné la complexité réelle de cache un ORM, difficile de rentrer dans le détail et de parler des avantages/inconvénients sans utiliser les termes "code généré" ou "plan d'exécution"...

    Citation Envoyé par sheitancrew Voir le message
    Je n'ai en revanche pas trouvé de points forts par rapport à NHibernate.
    NHibernate c'est l'ORM des "gros projets".
    Entity Framework, c'est l'ORM des "petits projets".

    Entity Framework est facile à implémenter/utiliser, intégré dans le framework et donc interfacé dans Visual Studio, pratique pour faire des lectures à la volée, mais mauvais pour faire des opérations de masses (lecture/écriture/suppression de plusieurs dizaines de milliers de lignes).

    NHibernate est plus configurable, plus "robuste" (encore que...), plus performant (encore que ça dépende de l'utilisation).

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 8
    Par défaut
    Merci pour les différences NHibernate vs Linq to Entities, c'est ce que j'avais cru comprendre, j'en ai confirmation.

    Concernant la vulgarisation, c'est par exemple pour moi qui utilise depuis 1 an les Datasets, qu'est ce qui pourrait me convaincre de passer à Linq ?

    Merci beaucoup

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Un éditeur tiers en propose un (j'ai plus la référence sous la main).
    C'est DevArt


    Citation Envoyé par Er3van Voir le message
    pratique pour faire des lectures à la volée, mais mauvais pour faire des opérations de masses (lecture/écriture/suppression de plusieurs dizaines de milliers de lignes).
    On pourrait dire la même chose de tous les ORM, y compris NHibernate... si tu veux faire des opérations de masse, il vaut mieux les faire directement en SQL, ou même en procédure stockée

  9. #9
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Pour vous faire une idée sur les perfs des ORM, clique ici vous trouverez ca sur ce poste

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  10. #10
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Oracle est encore à la bourre, mais je crois qu'ils travaillent dessus
    Il est actuellement en beta publique
    Un éditeur tiers en propose un (j'ai plus la référence sous la main).

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/02/2008, 14h14
  2. [Linq to Sql] Insertion de quelques champs uniquement
    Par binoo dans le forum Accès aux données
    Réponses: 5
    Dernier message: 16/02/2008, 14h29
  3. [Linq 2 SQL] Problème de modélisation
    Par tomlev dans le forum Accès aux données
    Réponses: 5
    Dernier message: 12/02/2008, 23h29
  4. [Linq to sql] db.add() ?
    Par telynette dans le forum Accès aux données
    Réponses: 2
    Dernier message: 08/02/2008, 19h54
  5. [Linq to SQL] Refresh du dbml
    Par zeavan dans le forum Visual Studio
    Réponses: 5
    Dernier message: 02/01/2008, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo