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

C# Discussion :

Utiliser un orm ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Par défaut Utiliser un orm ?
    Salut ,

    Comme le titre l'indique, est-ce que j'utilise un orm pour mon application j'ai entendu NHibernate il est bien ? ou vous me conseillez de faire mon propre orm ?

    et merci

  2. #2
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Utilise LinqToSQL plus facile et plus efficace

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    (il me semblait que linqtosql était mort né)


    les orms font gagner du temps en développement (bien que dans certains cas la flexibilité s'obtient à coup de code moyennement simple)
    par contre en théorie ils ne peuvent être que moins performant qu'un bon développeur sql

    après si tu n'y connais pas grand chose en sql (c'est presque aussi vaste que c#) ca ne sera pas forcément pire ^^

    mais au final tout dépend de l'appli, pour une appli de consultation avec 30 forms et 50 tables ca peut convenir
    si c'est pour une appli temps réel avec des Go de données il vaut mieux prendre le temps d'écrire les requetes soit même

    sinon rien n'empêche de mixer, à savoir utiliser un orm et écrire certaines requetes sur des points identifiés comme lent avec l'orm


    nhibernate a été dans les premier, microsoft a aussi fait un orm bien intégré à visual studio, Entity Framework (les versions récentes sont censées être mieux que la 1ère version de 2008)
    (pas sur qu'il soit dispo sur la version express, à vérifier le cas échéant avec clic droit ajouter un entity data model)

    au niveau fonctionnement ca ressemble à
    tu coches les tables et ca écrit le code tout seul, classes pour contenir, requete de select/insert/update/delete avec les méthodes qui vont avec
    pour les jointures 1-n ca peut faire une propriété as collection d'une autre classe/table
    enfin il y a pas mal de choses à apprendre dessus, mais une fois qu'on maitrise c'est clair que ca enlève une partie du code


    ca ne dispense pas par contre de mettre des indexes dans les tables
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Tu as aussi Dapper qui est léger et simple d'utilisation.
    Un membre a fait un article dessus :http://tlevesque.developpez.com/tuto...s-avec-dapper/

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    Citation Envoyé par yamisaaf Voir le message
    Salut ,

    Comme le titre l'indique, est-ce que j'utilise un orm pour mon application j'ai entendu NHibernate il est bien ? ou vous me conseillez de faire mon propre orm ?

    et merci
    En 2008, notre équipe a créé son propre ORM après avoir été déçu du manque de flexibilité de nHibernate + SQL Server et des promesses non tenues de Linq2SQL. Nous avons réussi à grand coups de code élégant mais complexe. Surtout, le cout n'en valait pas la chandelle en rétrospective sachant aujourd'hui qu'Entity Framework allait devenir une option sérieuse.

    Le grand danger des ORMs est la notion fausse et archi-fausse qu'ils absouent le développeur de la responsabilité de connaitre les bases du design de base de données, notamment les règles de normalisation et la planification des indexes.

    Les ORMs tendent à accélérer un projet en amont et le ralentir en aval. Au début, ça créé beaucoup de fonctionnalités mais alors que le projet nécessite plusieurs ajustement, l'ORM vient souvent alourdir le processus de refactoring.

    Je ne prétends pas avoir la science infuse et j'utilise moi-même les ORM dans la plupart des cas mais il faut considérer ceci:

    1 - Je créé TOUJOURS la base de données avant de la faire mapper dans Entity Framework. Le "code-first" peut créer des monstres.
    2 - Je créé TOUJOURS une abstraction (DAL) entre EF et mon code. Je ne veux pas que mon code métier connaisse les entités générées par l'ORM. Ça ajoute de l'overhead au début mais ça sauve beaucoup de temps lorsqu'il y a du refactoring ou des changements majeurs.
    3 - Je sépare mes bases de données en schémas afin de créer des mappings logiques plus petits. Grosso-modo, je ne veux pas de mappings de plus de 10 tables.

    Donc:

    Explorer Entity Framework, apprend comment abstraire la couche de données, apprend la normalisation et garde les choses simples.

  6. #6
    Membre averti
    Inscrit en
    Août 2011
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 11
    Par défaut
    Ok merci pour vos conseil , sinon si vous pouvez me donner des avis sur LinqToSql ? il est bien ?

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Question intéressante tellement les choses ont évoluées depuis 10 ans.

    Personnellement j'ai été confronté plusieurs fois à ce besoin d'ORM et j'ai toujours tenté les solutions intégrées fournies par MS (i.e. EF) :
    - en 2008 : un existant important avec des classes et un schéma complexes (SQL Server 2005)
    à l'époque j'avais tenté EF 1.0 mais il était "inutilisable" donc j'ai finalement utilisé LINQ to SQL qui a fait le job.
    - en 2010 : pas d’existant mais des contraintes de temps et de maintenabilité et une base de données MySQL
    je réessaye avec EF (version 4.0) : mieux mais encore overengineeré, au final j'utilise NHibernate qui est plug and play
    - en 2013 : pas d’existant, pas de contraintes et base SQL Server 2012
    EF 6.0 cette fois et là je retrouve l’effet plug-and-play de NHibernate, le workflow "code first" permet d'éviter l'usine à gaz.

    Désormais je recommande plutôt EF, notamment pour son support intégral de LINQ et son intégration à VS qui est toujours rassurante pour certains clients.

    Sache que LINQ2SQL est désormais obsolète, toutes ses fonctionnalités ont été intégrées à EF.

    Quant au processus de design je ne peux que plussoyer Babyneedle et je me sens moins seul avec mon workflow exotique "code-first db-first" où je designe également indépendamment mon schéma relationnel et mon modèle OO de classes, avant de les lier via la tuyauterie de l'ORM.

    De même il "faut" bien isoler le code de l'ORM, pour cela j'utilise le pattern repository.

    Après utiliser un ORM ne vas pas nécessairement aider si tu as 1 table et 2 requêtes à faire, même s'il ne vas pas non plus complexifier : depuis l'introduction des DbContext et DbSet EF n'est plus une usine à gaz et s'utilise très simplement (du moins avec SQL Server).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Où placer les requêtes SQL (sans utiliser d'ORM)
    Par xhion dans le forum Symfony
    Réponses: 6
    Dernier message: 20/12/2012, 09h51
  2. utilisation des fichiers **.orm.yml
    Par MarronSuisse dans le forum Doctrine2
    Réponses: 0
    Dernier message: 25/02/2012, 02h21
  3. Réponses: 11
    Dernier message: 06/10/2011, 20h48
  4. Quel ORM utiliser?
    Par Thomas.NET dans le forum Accès aux données
    Réponses: 22
    Dernier message: 13/04/2010, 16h46
  5. Comment s'utilise l'ORM avec ce framework ?
    Par sir_gcc dans le forum Zend_Db
    Réponses: 13
    Dernier message: 20/01/2008, 13h03

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