2010-08-06 7 views
3

ActiveRecord est trop limitant normalement. Cependant, je suis dans une situation difficile en ce qui concerne les opinions de chaque membre de l'équipe concernant l'utilisation des ORM. Nous utilisons actuellement un ActiveRecord très basique avec le regret que je dis est écrit principalement à la main avec une génération de code de base. Je voudrais construire un nouveau DAL pour nous mais en évitant les limitations d'ActiveRecord, ainsi DDD plus. Les points mais je suis contre Battling sont (les anciens développeurs skool et moi-même assez jeunes):Quelle approche DAL prendre?

équipe Lead Developer

  • est favorable à des procédures stockées, mais pas ... certains cohérente juste obtenir une table par exemple SELECT * FROM Société et certains obtenir SELECT C. *, O.OtherTableValue FROM Société C ... (très frustrant)
  • Ne connaît pas vraiment les avantages de certains des derniers outils ORM
  • Ne s'engage pas à tout outil comme son "trop ​​restrictive" et s'il y a problèmes que faites-vous?

DBA

  • Ne pas comme SQL
  • dynamique n'aime pas SELECT *

Je ne dis pas ci-dessus sont hors limites, son plus convicing eux autrement. Je crois que nous pourrions massivement améliorer notre efficacité avec l'utilisation d'un ORM, mais il est très difficile de les convaincre autrement. Si je pouvais donner des preuves dans certains de ces domaines, je pourrais être en mesure de les convaincre, même en mettant en œuvre sous les couvertures sans qu'ils sachent d'abord et ensuite voir les avantages.

Quels conseils pouvez-vous donner pour aider ma situation? Je crois que de nombreux développeurs sont confrontés à ce problème et ne peuvent pas choisir l'architecture qu'ils aimeraient utiliser.

Répondre

2

Je pense que votre chef d'équipe doit soit s'engager à la cohérence ou passer du temps sur un projet de recherche ORM pour faire une recommandation à utiliser. En d'autres termes, un chef d'équipe incohérent et mis en place ne devrait pas être dans ce rôle. Deuxièmement, j'ai tendance à être d'accord avec votre administrateur de base de données pour un certain nombre de raisons. Tant qu'il/elle est assez flexible pour savoir qu'il y a des occasions où SQL dynamique résoudra le problème beaucoup mieux.

Pour votre situation spécifique, demandez à votre administrateur de base de données d'établir la loi selon laquelle les procédures stockées doivent être utilisées à chaque fois, sauf justification au cas par cas et mise en application par des règles et une surveillance. Cela permettra de résoudre le problème de cohérence. Peut-être alors, avec cette politique en main, un ORM semble plus alléchant que d'avoir à coder manuellement tout au chef d'équipe.

+0

En ce qui concerne le chef d'équipe - Il ne changera pas ses habitudes, il n'a pas vraiment l'intérêt dans le travail pour améliorer les choses ... c'est plus «ça va faire». Ne devrait pas faire le travail je pense mais n'est pas mon appel sur ce que je dois faire En ce qui concerne le DBA, il n'a pas vraiment les problèmes que vous avez des applications que les bases de données sont son fond, je pense qu'il a appris jusqu'à un certain point et n'a pas appris depuis, et donc n'a pas appris sur les nouveaux changements, c.-à-d. dynamique sql n'est pas 'toujours' mauvais maintenant .. – user203538

+0

Ensuite, je vous suggère de lire le livre "Death March". Pourrait aider votre situation là-bas. –

+0

On dirait une nouvelle DAL ou un autre travail – user203538

1

Le développeur principal doit écouter le DBA. "SELECT *" est mauvais. Et à partir des points de balle sur le développeur principal, il semble que vous avez une bataille ascendante familière. Parfois, le chemin de moindre résistance dans cette situation consiste à implémenter quelque chose en utilisant un ORM (tel que NHibernate) et à programmer une sorte de démonstration à l'équipe. Encourager leur contribution, en particulier par le développeur principal et le DBA et autres nay-sayers. Ils pourraient avoir des griefs légitimes qui peuvent être résolus avec l'outil que vous en apprendre plus à ce sujet. D'un autre côté, ils pourraient juste être mis-contre lui pour aucune bonne raison logique.Si c'est le cas, il est préférable de le découvrir parce que cela pourrait très bien signifier qu'il n'y a pas de gain de cet argument contre eux, parce qu'ils ne discutent pas vraiment.

+0

Très beaucoup ce n'est pas vraiment débattre ... c'est comme je l'ai commenté ci-dessus, ils ont appris certaines choses et n'ont pas dit 5-10yrs et pensent que c'est toujours le meilleur moyen. Je pense que la seule façon de gagner et d'améliorer les choses est de lancer ma propre DAL ... mais c'est par où commencer, c'est une tâche si importante. Je sais que les gens disent de ne pas mais je ne pense vraiment pas avoir beaucoup de choix :( – user203538

1

Quelles sont leurs objections à l'utilisation d'un ORM? S'ils ne sont pas simplement obstinés et têtus, alors si vous savez précisément ce qu'ils s'opposent à vous et répondez à ces préoccupations. Comme les autres, je pense que votre DBA est correct. Mais s'il est préoccupé par l'injection de SQL à partir de SQL dynamique, ORM soulager quelque peu ce problème. Select * devrait être un motif de tir.

Je suis d'avis que vous devriez simplement utiliser quelque chose, LINQ-to-SQL ou subsonic ou nhibernate sur quelque chose de petit. Montrer que le développement peut être plus rapide et plus propre en utilisant un ORM.

+0

En ce qui concerne la création d'un nouveau DAL sur lequel ORM est le mieux à base ... S'il apparaît que je l'ai créé alors il va utilisez-le donc juste besoin d'un point de départ, tordez-le et prenez quelques idées d'autres ORMs Subsonic semble une base de code simple ... pensées? – user203538

Questions connexes