OK, je pose cette question parce que je suis totalement confus. J'avais l'habitude d'utiliser une approche normale pour accéder aux bases de données de C # (je veux dire en utilisant SQLConnection, oracleconnection, SQLCOMMAND, ExecuteQuery, etc.). Ensuite, j'ai entendu parler de Ado.net, orm et appris Nibernate (pas un pro, mais je peux gérer). P>
Récemment, je ne vois pas d'activités particulières concernant NHibernate beaucoup. Les gens autour de moi qui utilisaient Nhibernate (et étaient un fan) se déplacent maintenant à d'autres méthodes. P>
Quelle est la méthode d'accès à la base de données la plus utilisée de nos jours? Comment puis-je garder une trace de cette tendance changeante? P>
7 Réponses :
Les méthodes les plus courantes sont probablement celles-ci: p>
Tous sont toujours utilisés et ils ont des avantages et des inconvénients différents. Je pense que Microsoft essaie actuellement d'encourager les gens à utiliser le entité Cadre . P>
À mon avis, pour le développement rapide de l'application, à l'aide d'un outil ORM comme LLBLGEN est la meilleure solution. Vous pouvez accélérer considérablement les progrès du développement. p>
Il n'y a qu'un seul moyen - ado.net pour SQL Server. Plus particulier, les objets de connexion et de lecteur là-bas. Maintenant, vous pouvez dire qu'il existe des choses comme le cadre d'entité - mais suffisamment intéressant, ils sont au-dessus de la couche d'accès réelle, en utilisant les deux éléments d'accès nommés auparavant. Même les ensembles de données sont une couche plus élevée (les données sont lues via un digne d'information). P>
Quelle est la base de données la plus utilisée Méthode d'accès de nos jours? P> blockQuote>
Je parie que cela est toujours des jeux de données. La quantité d'inutilisée après le principe de glisser-déposer est toujours la majorité, et cette approche du studio visuel conduit à des ensembles de données. P>
Les professionnels utilisent une orèse de tri. L'entité framework est assez poussée maintenant par des personnes qui ne savent généralement pas vraiment ce qu'est un orj peut le faire programmer correctement. À l'heure actuelle, mon meilleur pari est toujours NHibernate pour une couche de haute qualité. P>
Pas une mauvaise réponse Enregistrer pour le dernier paragraphe. Ceux d'entité sont utilisés par ceux qui se rendent compte qu'il existe différents types d'ormes, chacun ayant des forces et des faiblesses uniques ... Nous avons donc choisi l'établissement d'entité pour notre application.
Non seulement l'utilisation de la traînée et de la goutte, mais il existe un lot de systèmes existants écrits à l'aide de jeux de données ADO.NET et dactylographiés et ceux-ci sont toujours en cours de développement - personne ne va refacturer un système entier simplement pour utiliser le nouvel orj La technologie.
@Herbie: Le code hérité est une défense claire, à droite. @Justin - ef n'a jamais été un orme décent jusqu'à présent. Il n'y a guère de force qu'elle se compare à des offres plus matures.
Donc, il existe peu de technologies pour accéder à la base de données dans .NET. Au début, c'est ado.net. C'est une technologie d'accès «vraie», car d'autres (comme Nhibernate, Linq2SQL, Framework entité (ils sont tous ORM)) utilisent Ado.net pour se connecter en réalité à la base de données et exécuter des commandes à son encontre. Bien sûr, .NET fournit d'autres moyens d'interagir avec la base de données, par exemple, importer une partie de l'interface COM, mais elles ne sont pas naturelles. P>
En outre, des outils qui vous permettent de communiquer avec la base de données existant. Ce sont des extensions ADO.NET (comme l'accès aux données de la bibliothèque d'entreprise) et les outils vous permettent de travailler avec des objets (entités nommées) qui sont naturels pour l'exécution orientée objet en tant que .NET, mais chargez et enregistrez cette entité de la base de données. Ces outils nommés ORM (Mapper d'objet relationnel) et des outils modernes sont faciles à utiliser et agréables. P>
J'adore personnellement Linq à SQL à l'aide de CodeMith pour générer les entités, plus précisément, je pense I Normalement à la base de données de base de données, donc je fais mes modifications dans la base de données, accédez à VS régénère les entités, puis je peux continuer à coder. p>
Peu importe ce que vous choisissez, je pense qu'un facteur important pour un orj est en mesure de la configurer pour répondre à vos besoins, il n'y a pas de taille unique pour tous. P>
BTW, je ne travaille pas pour CodeMith, je viens de l'utiliser :) P>
Eh bien, si je dois en choisir un, je dirais que l'entité cadre est la solution la plus générique, LINQ à SLQ est en cours de dépréciation à l'avenir, NHibernate sera de plus en plus à l'avenir. P>
Mais le meilleur conseil est probablement essayer de choisir un pour toute l'équipe! Même si cela a des inconvénients, ils ont tous à un moment donné ou un autre. P>
@Benjamin ne fais pas ça.
Framework Nibernate et entité sont d'excellents outils pour résumer la base de données (le code EF est incroyable), mais dans certains cas, c'est mauvais. P>
J'ai vu de nombreuses applications que les mauvaises performances sont sur la connexion de base de données, et NH ou EF ne permettent pas de contrôler les requêtes ni à l'utilisation de fonctionnalités les plus puissantes de la base de données, à moins que vous soyez un expert dans les ormes (malheureusement, sont rare). p>
Personnellement, je préfère maintenir le contrôle dans mes mains. P>
J'ai créé un outil, Thunderstruck , que j'utilise dans mes projets et récemment, j'ai mis la source sur github . P>
Qu'est-ce que les gens autour de vous disent qu'ils avaient bougé?
Et n'oubliez pas Sqldatasource, ObjectDataSource, LinqdataSource, Linq à SQL, Framework d'entité, Services de données ADO.NET ...
Beaucoup de choses ... une approche normale (ils disent qu'il facilite le TDD), Linq, Framework, etc., etc., etc., etc ......
Votre question, prise littéralement, concerne les parts de marché et donc beaucoup de sujet. Vous pouvez essayer de faire cela un sondage (cw).
Cela dépend de quelle année vous avez appris le framework .NET. Grin i>