Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1639 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Quel ORM choisir ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Quel ORM choisir ?

n°1777707
pot2yaourt
Posté le 26-08-2008 à 13:55:17  profilanswer
 

Bonjour à tous,
 
Voilà, j'aurais aimé savoir quel ORM (Object-Relational Mapping) est le plus utilisé avec C# et quels sont ses avantages/inconvénients... et y'a-t-il d'autres ORM qui valent le détour ?
 
Merci d'avance pour vos réponses,
Lionel.


Message édité par pot2yaourt le 16-10-2008 à 06:57:27

---------------
On dit que les gens veulent du travail, mais c'est faux ! Etre payé leur suffirait !
mood
Publicité
Posté le 26-08-2008 à 13:55:17  profilanswer
 

n°1777985
moi23372
Posté le 26-08-2008 à 19:53:20  profilanswer
 

Pour avoir participer récemmment été à une conférence parlant du sujet je vais te répondre.  
Voila ce qui existe sur le marché
 
- DataSet Typé
- Linq for SQL SERVER
- NHibernate
 
Le premier point abordé dans cette conférence était les performances.  
De loin, les DataSet typé reste les plus performant suivante de Linq et loin derrière encore NHibernate qui est ultra exécrable niveau performance.  
 
Ensuite, la qualité du code était abordé. La, de loin, c'est Linq qui l'emportait devant les DataSet typé et NHibernate. NHibernate et ces fichiers xml de configs sont pas simple à utiliser et très difficile à configurer afin d'arriver à des solutions satisfaisante (comparé aux deux autres).  
 
Voila, je ne connais honnêtement pas de solution alternative.  
Pour être honnête, étant certifié MCTS, je peux te dire que pour moi, la solution des dataset typés restent de loin la meilleure solution.  
Pour quelqu'un qui maitrise un poil SQL, il n'existe pas mieux sur le marché.  
 
Voila, ce que je peux donc te dire à ce sujet. J'espère que je t'aurais éclairé sur ce sujet.  
Maintenant, il en existe peut être d'autres sur le marché, mais honnêtement, je ne les connais pas et je ne pense pas qu'ils soivent beaucoup utilisés.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1778088
MagicBuzz
Posté le 27-08-2008 à 01:45:29  profilanswer
 

moi > t'as une doc sur les dataset typés ? (site, article msdn, etc. ?)

n°1778109
the big be​n
Posté le 27-08-2008 à 08:28:54  profilanswer
 

Mais par contre linq question confort de programmation et le fait de gagner pas mal de temps sur la couche objet ca laisse reveur!

n°1778110
haazheel
Posté le 27-08-2008 à 08:29:09  profilanswer
 

A voir aussi que NHibernate vient de passer en version 2.0, avec peut-être (j'ai pas regardé le changelog) des améliorations des perfs...


---------------
Another .Net Blog
n°1778126
m3z
il faut toujours faire simple
Posté le 27-08-2008 à 09:34:02  profilanswer
 

moi23372 a écrit :

Pour avoir participer récemmment été à une conférence parlant du sujet je vais te répondre.  
.


 
Hummm ... juste une question qui organisait cette conférence ?

n°1778141
MagicBuzz
Posté le 27-08-2008 à 09:54:51  profilanswer
 

Je pense pas que ça change grand chose. J'imagine que tu as Microsoft en tête, et que tu penses que la conférence n'était pas neutre.
 
J'ai moi-même participé à des séminaires Microsoft, et il faut savoir une chose : c'est rarement le personnel de Microsoft qui les effectue, mais des organismes de formation indépendants. Et à plusieurs reprises, j'ai vu des formateurs plébiciter le GNU et les plateformes Linux en pleine conférence sur un produit Microsoft.
 
Tout comme les bouquins Microsoft Press, je trouve au contraire que l'éditeur sait rester à sa place quand il parle de formation. Certes, il va bien détailler ses technos et comment bien les utiliser, mais pas seulement, il pense aussi à l'intégration en entreprise, sur réseau éthérogène. Il n'oublie alors pas d'indiquer comment faire pour faire marcher tout le monde ensemble, et quels outils non Microsoft préférer si on a déjà ceux de Microsoft sous la main.
 
J'ai plusieurs exemples en tête, et je ne vais pas tous les détailler. Le premier qui me vient à l'esprit, c'est un bouquin sur le XHTML que j'ai, où ils expliquent en long en large pourquoi c'est mieux d'utiliser du flash ou un applet Java plutôt qu'un ActiveX lorsque les fonctionnalités avancées de l'ActiveX ne sont pas requises.

n°1778236
moi23372
Posté le 27-08-2008 à 13:00:45  profilanswer
 

m3z a écrit :


 
Hummm ... juste une question qui organisait cette conférence ?


 
VISION IT GROUP Belgique. Présenté par des ".NET Architect"


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1778238
moi23372
Posté le 27-08-2008 à 13:02:48  profilanswer
 

MagicBuzz a écrit :

moi > t'as une doc sur les dataset typés ? (site, article msdn, etc. ?)


 
Non je n'ai pas de doc sous la main, mais je suis perduadé que tu trouveras sans problème des tuto expliquant leur fonctionnement en détail.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1778239
moi23372
Posté le 27-08-2008 à 13:04:36  profilanswer
 

the big ben a écrit :

Mais par contre linq question confort de programmation et le fait de gagner pas mal de temps sur la couche objet ca laisse reveur!


 
Confort oui, mais uniquement compatible avec SQL SERVER.  
De plus, cette philosophie empêche les découpes en couche de façon hétérogène. C'est une bonne avancée pour ceux qui ne maitrise pas vraiment SQL, par contre pour les autres, je reste sceptique. Le gros avantage est bien sure que dés la compilation, on sait détecter les erreurs étant donné que les query Linq ne sont pas au format string.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
mood
Publicité
Posté le 27-08-2008 à 13:04:36  profilanswer
 

n°1778853
the big be​n
Posté le 28-08-2008 à 09:36:23  profilanswer
 

On a jamais dit que ca te dispensait d'une couche Data et oui hélas pour l'instant ce n est compatible que SQL Server et XML mais les autres vont arriver.  
Je connais pas mal SQL mais ca n'empeche que ca te fait quand même gagner un temps fou et il semble que souvent tu arrive a des query plus optimisées avec le code généré par linq que le code que toi tu génère dans le cas de requete complexes

n°1799481
juflo
Posté le 13-10-2008 à 16:05:23  profilanswer
 

Bonjour
 
Tu peux jeter un coup d'oeil ici : http://www.microsoft.com/france/vi [...] 6568ff7f31
Tu as plusieurs ORM qui sont étudiés ici.
Juste pour compléter ce qui a été dit ici, il n'y a pas que DataSet/Linq/NHibernate comme ORM C# de sérieux.

n°1832427
TotalRecal​l
Posté le 30-12-2008 à 12:42:26  profilanswer
 

Personne ici n'évoque Subsonic, pourtant depuis deux ans il commence à rencontrer une popularité certaine, bien qu'il ait ses inconvénients (pas de gestion propre du lazy loading sur les FK d'une table, langage de requêtage très loin d'égaler LINQ...

 

Il y a aussi mygeneration qui vaut le détour parait il.

 

Je n'évoque ici que les gratuits pas encore cités, après il y en a des tas d'autres (entity spaces, codesmith...)

 

Personnellement aussi bien au boulot qu'à titre perso j'utilise LINQ, c'est le langage de requêtage (plus besoin de procstock ou d'écriture alambiquée pour les requêtes simples) qui fait toute sa force. Globalement on peut lui reprocher quelques défauts de design (le context qui sert de fourre tout par exemple) mais jusque alors je n'ai trouvé aucune limite restrictive. La gestion du lazy loading, aussi bien sur les champs que sur des tables (via "loadwith" ) est très pratique à utiliser par exemple.

 

edit : tu ne précises pas si tu veux un ORM qui sert juste à "t'interfacer" avec ta base de façon élégante ou qui te prenne en charge dérrière tout un modele objet lourdingue comme l'entity framework que je n'ai pas évoqué.
Personnellement je pense que chaque chose doit rester à sa place et je préfère coder moi même ma logique métier, sans "assistant".


Message édité par TotalRecall le 30-12-2008 à 12:49:39

---------------
Topic .Net - C# @ Prog
n°1832463
pot2yaourt
Posté le 30-12-2008 à 13:36:19  profilanswer
 

En fait, je recherche plutôt quelque chose de relativement simple à utiliser et s'il peut me générer les classes métiers ça serait pas mal.
 
J'ai récemment découvert OR.Net ( http://www.ornetmapper.com/ ), à première vue ça paraît sympa. Faut juste que je trouve un peu de temps pour le tester.


---------------
On dit que les gens veulent du travail, mais c'est faux ! Etre payé leur suffirait !
n°1832966
TotalRecal​l
Posté le 31-12-2008 à 18:25:46  profilanswer
 


Ca tombe bien c'est un peu le sujet de la conversation, ORM tout ça :d...


---------------
Topic .Net - C# @ Prog
n°1854864
Profil sup​primé
Posté le 24-02-2009 à 23:48:07  answer
 

llblgen ? (le sujet ne dit pas gratuit)

 

le choix de l'orm se fait surtout selon le besoin. certains font tout pour toi (ya juste a installer, next, next et tes fonctions pretes a etre utilisé, new() et .save et c'est sauvegardé), d'autres faut ecrire avant de pouvoir faire qqch, et savoir quoi ecrire surtout ...
mais la premiere question que l'on peut se poser, c'est au niveau de la compatibilité (sybase, sql serv, oracle ... tous les orm ne gerent pas tous)
et la derniere question est au niveau de la recompile si la structure de la bd change. si ca n'arrive jamais tant mieux, mais si ton proj est situé sur un site distant, accessible en ftp uniquement et que tu dois faire face a une haute dispo, c'est une autre affaire :D

 

apres, bien sur, les perf, mais bon, qd c'est le point vital du projet, tu code toi meme ta couche d'acces aux données, comme ca, tu te passe pas ton temps a dire "Putain, j'aurai du recoder l'orm, c'est pour ca que ca rame !!!"

 

edit: + le logging, vu que certains orm incluent leur propre outil de log, un peu contraignant qd tu es deja habitué a une autre enseigne (nlog, entli, log4net ...)


Message édité par Profil supprimé le 25-02-2009 à 00:03:25
n°1855491
uxam
Posté le 26-02-2009 à 13:26:20  profilanswer
 

lequel me conseillerez vous de compatible avec oracle ? Il faut qu'il soit simple avant tout :o
 
 
edit: et gratuit obvious :o

Message cité 1 fois
Message édité par uxam le 26-02-2009 à 13:26:41

---------------
PSN ID : Euronimus | Steam ID : [HFR] Euronimus | uplay: HFR_uxam
n°1855505
masklinn
í dag viðrar vel til loftárása
Posté le 26-02-2009 à 14:02:13  profilanswer
 

uxam a écrit :

lequel me conseillerez vous de compatible avec oracle ? Il faut qu'il soit simple avant tout :o
 
 
edit: et gratuit obvious :o


[:el g]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1855531
uxam
Posté le 26-02-2009 à 14:29:45  profilanswer
 


hu ?


---------------
PSN ID : Euronimus | Steam ID : [HFR] Euronimus | uplay: HFR_uxam
n°1895929
calavera-
Posté le 16-06-2009 à 21:09:54  profilanswer
 

Il y a surtout depuis peu l'Entity Framework qui est dispo (VS 2008 avec SP1, Fwk 3.5)
 
Je l'ai utilisé dans le cadre d'un petit projet (fat client) avec SQLite et ça a plutôt bien fonctionné.
Contrairement à Linq To SQL, l'entity framework n'a pas été conçu dans l'optique de l'utiliser exclusivement avec SQL Server.
 
Pour SQLite j'ai utilisé le drivers suivant:


Plutôt satisfait de son utilisation. Mais c'est loin d'être optimum dans le cas de grand schéma avec beaucoup de données. Dans EF, toutes les données manipulé doivent être en mémoire... Y compris pour les supprimer...
 
Dans tous les cas je n'ai pas trop approfondi, c'était déjà un petit délire de ma part de l'utiliser. Mais je l'ai trouvé facile à utiliser et bien fonctionnel.


Message édité par calavera- le 16-06-2009 à 21:13:34
n°1896413
TotalRecal​l
Posté le 17-06-2009 à 20:11:43  profilanswer
 

Personnellement je ne trouve pas que l'entity framework soit la merveille que certains décrivent par rapport à Linq to SQL.

 

En gros si on a besoin d'accéder à autre chose qu'un SQL Server il n'y a que là qu'il devient avantageux (vu que c'est chose impossible avec Linq to sql).
Son autre avantage c'est la possibilité de mettre en oeuvre un modèle objet un peu plus poussé (par exemple en Linq to SQL, à moins de bidouilles tordues les tables dérivent de... rien du tout. C'est franchement pas folichon dès qu'on a envie de faire un peu de polymorphisme sur des tables dont le schéma est identique ou proche entre elles mais avec des usages différents).
Et au dela de ça je trouve la conception assez lourdingue et pas optimale niveau utilisation des ressources pour des bénéfices très limité devant linq to sql (je bosse en sql server...), même si il faut avouer qu'en définitive les perfs sont bonnes.

 

J'ai cru comprendre que l'entity framework V4 (à venir pour .Net 4 / VS2010) sera par contre plus intéressante mais je n'ai pas creusé, en attendant mes dév actuels s'appuient sur linq to sql.
Cela dit j'ai peut être tort, je n'ai peut être pas laissé sa chance à l'entity framework vu que dès le début je n'ai pas été très emballé.

 

Une page qui compare (un peu) les deux :
http://dotnetaddict.dotnetdevelope [...] inqsql.htm


Message édité par TotalRecall le 17-06-2009 à 20:14:53

---------------
Topic .Net - C# @ Prog
n°1902352
calavera-
Posté le 05-07-2009 à 09:41:14  profilanswer
 

Je ne peux pas comparer avec Linq to SQL car je ne l'ai jamais utilisé. Mais effectivement ça paraissait plus "light" et plus que suffisant pour mes besoins. Mais je devais le faire fonctionner avec SQLite donc pas le choix.  
 
Il me semble qu'EF soit la voie choisie par Microsoft pour l'avenir. Donc autant s'y mettre si l'on commence.
 
On verra plus clair avec Visual Studio 10 et .Net 4.


Message édité par calavera- le 05-07-2009 à 09:41:52
n°1902353
TotalRecal​l
Posté le 05-07-2009 à 09:53:08  profilanswer
 

Si le SGBD ciblé est SQLite c'est que tu ne vises pas un haut degré de performances ni de fonctionnalité, les contraintes ne sont pas les mêmes. Subsonic par exemple ferait sans doute bien l'affaire et il est simple à prendre en main... pour faire des choses simples.

 

Par exemple L2SQL est pensé pour que tout enregistrement soit englobé dans une transaction, et il permet de gérer finement ce qui est chargé ou non avec un tuple lors d'un select (aussi bien au niveau des champs que des tables liées), alors que Subsonic tend plutôt à te faire faire des requêtes unitaires et est beaucoup moins souple sur le deuxieme point : c'est plus limité mais plus simple à utiliser.

 

Ses propres limitations convergent donc peut être assez bien avec la philosophie de SQLite et ses restrictions. Je ne sais pas ce que vaut le provider SQLite de Subsonic mais il semble qu'il tienne la route.


Message édité par TotalRecall le 05-07-2009 à 09:53:48

---------------
Topic .Net - C# @ Prog
n°1902354
TotalRecal​l
Posté le 05-07-2009 à 10:03:49  profilanswer
 

edit : j'ai zappé un énorme détail... Subsonic 3 vient de sortir et à mon avis il y a du gros changement !


---------------
Topic .Net - C# @ Prog
n°1915157
czar
Posté le 14-08-2009 à 14:49:45  profilanswer
 

je trouve que votre discussion est assez interessante, mais personne n'a parlé de Ibatis,  
est ce que la performance de hibernate c ameliorer dans ces dernieres version?
et qu'est ce que vous pensez de ORM.NET?
 
qu'elle est l'orm le plus adapté avec C# et MySQL??
cordialement,


Message édité par czar le 14-08-2009 à 14:50:47
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Quel ORM choisir ?

 

Sujets relatifs
Need Help pour choisir un CMSQuel CMS choisir ?
[Hibernate] choisir ordre des colonnes à la création de tablesCertification MCTS 70-536 et 70-526 : quel centre choisir ?
que choisir pour faire un intranet (simple)MySQL : importer fichier csv, choisir les champs à renseigner ...
Quelles technologies choisir pour mon site?Quel SGBD choisir?
Quel language choisir?Que choisir pour un album photo?
Plus de sujets relatifs à : Quel ORM choisir ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR