Pendant mon apprentissage, j'ai utilisé NHibernate pour certains des petits projets dont j'avais le plus codé et conçu sur mon propre. Maintenant, avant de commencer certains plus gros projet, le débat est la façon de concevoir l'accès aux données et de savoir si ou de ne pas utiliser un ORM couche. Comme je suis encore dans mon apprentissage, et me considère encore comme un débutant dans l'entreprise de programmation, je n'ai pas vraiment d'essayer de pousser à mon avis, qui est que l'utilisation d'un object relational mapper à la base de données peut faciliter le développement de beaucoup. Les autres codeurs dans l'équipe de développement sont beaucoup plus expérimentés que moi, donc je pense que je vais juste faire ce qu'ils disent. :-)
Cependant, je ne comprends pas complètement les deux principales raisons pour ne pas utiliser NHibernate ou un projet similaire:
- On peut créer ses propres objets d'accès aux données avec des requêtes SQL et la copie de ces requêtes Microsoft SQL Server Management Studio.
- Débogage d'un ORM peut être difficile.
Alors, bien sûr, je pourrais construire ma couche d'accès aux données avec beaucoup d' SELECT
s, etc, mais ici je m'ennuie de l'avantage de jointures automatiques, lazy-chargement des classes de proxy et d'un moindre effort de maintenance si une table obtient une nouvelle colonne ou d'une colonne devient renommé. (Mise à jour de nombreux SELECT
, INSERT
et UPDATE
des requêtes contre la mise à jour de la cartographie config et éventuellement remanier les classes d'affaires et de l'Otd.)
Aussi, à l'aide de NHibernate vous pouvez rencontrer des problèmes imprévus si vous ne connaissez pas le cadre très bien. Qui pourrait être, par exemple, de faire confiance à la Table.hbm.xml lorsque vous définissez une longueur de la chaîne pour être validé automatiquement. Cependant, je peux aussi imaginer bugs similaires dans un "simple" SqlConnection de requête de base de données de la couche d'accès.
Enfin, ce sont ces arguments mentionnés ci-dessus vraiment une bonne raison de ne pas utiliser un ORM pour un non-trivial base de données, d'applications d'entreprise? Sont il y a probablement d'autres arguments qu'ils/j'ai peut-être raté?
(Dois-je ajouter que je pense que c'est comme le premier "gros" .NET/C# en fonction de l'application qui nécessitent un travail d'équipe. Les bonnes pratiques, qui sont considérées comme tout à fait normal sur un Débordement de Pile, tels que les tests unitaires ou d'intégration continue, intégration continue sont non-existant ici jusqu'à maintenant.)