Quel ORM choisir ?

Quel ORM choisir ? - C#/.NET managed - Programmation

Marsh Posté le 26-08-2008 à 13:55:17    

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 !
Reply

Marsh Posté le 26-08-2008 à 13:55:17   

Reply

Marsh Posté le 26-08-2008 à 19:53:20    

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)
Reply

Marsh Posté le 27-08-2008 à 01:45:29    

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

Reply

Marsh Posté le 27-08-2008 à 08:28:54    

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

Reply

Marsh Posté le 27-08-2008 à 08:29:09    

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
Reply

Marsh Posté le 27-08-2008 à 09:34:02    

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 ?

Reply

Marsh Posté le 27-08-2008 à 09:54:51    

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.

Reply

Marsh Posté le 27-08-2008 à 13:00:45    

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)
Reply

Marsh Posté le 27-08-2008 à 13:02:48    

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)
Reply

Marsh Posté le 27-08-2008 à 13:04:36    

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)
Reply

Marsh Posté le 27-08-2008 à 13:04:36   

Reply

Marsh Posté le 28-08-2008 à 09:36:23    

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

Reply

Marsh Posté le 13-10-2008 à 16:05:23    

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.

Reply

Marsh Posté le 30-12-2008 à 12:42:26    

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

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 30-12-2008 à 13:36:19    

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 !
Reply

Marsh Posté le 31-12-2008 à 18:25:46    


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


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 24-02-2009 à 23:48:07    

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
Reply

Marsh Posté le 26-02-2009 à 13:26:20    

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
Reply

Marsh Posté le 26-02-2009 à 14:02:13    

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
Reply

Marsh Posté le 26-02-2009 à 14:29:45    


hu ?


---------------
PSN ID : Euronimus | Steam ID : [HFR] Euronimus | uplay: HFR_uxam
Reply

Marsh Posté le 16-06-2009 à 21:09:54    

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
Reply

Marsh Posté le 17-06-2009 à 20:11:43    

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

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 05-07-2009 à 09:41:14    

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
Reply

Marsh Posté le 05-07-2009 à 09:53:08    

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

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 05-07-2009 à 10:03:49    

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


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-08-2009 à 14:49:45    

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
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed