Est-il préférable de créer des classes modèle ou le bâton avec classe utilitaire de base de données générique?

voix
5

Nous avons une simple classe de service en interne pour nos appels de base de données (une enveloppe de lumière autour ADO.NET), mais je pense à la création de classes pour chaque base de données / objet. Serait-il chose à faire, ou serait-il bénéficier que si nous utilisions le cadre complet pour ASP.NET MVC?

Nous avons donc ceci:

SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters);
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters);
SQLWrapper.Execute(connstr-alias, sql-statement, parameters);

Songez à faire ceci:

Person p = Person.get(id);
p.fname = jon;
p.lname = smith;
p.Save();

ou pour un nouveau record -

Person p = new Person();
p.fname = Jon;
p.lname = Smith;
p.Save();
p.Delete();

Serait-ce intelligent, ou serait-il exagéré? Je peux voir les avantages pour la réutilisation, la base de données en évolution, et la maintenance / lisibilité.

Créé 05/08/2008 à 21:10
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
8

Cette question est chargée, les données de conception entraînée par rapport Driven Design domaine. Pour toute application qui a une bonne quantité de comportement, devrait être préféré Driven Design domaine. Rapports, ou des applications de services publics ont tendance à mieux fonctionner (ou sont plus rapides à développer) avec des données de conception entraînée.

Qu'est - ce que vous demandez est « mon entreprise devrait faire un changement fondamental dans la façon dont nous concevons notre code ». En tant que domaine monstre, ma réaction instinctive est de crier oui . Cependant, par la simple nature de votre question, je ne suis pas sûr de comprendre la portée du changement que vous proposez. Je pense que vous devriez en parler plus à votre équipe à ce sujet.

Obtenez une littérature, comme DDD Evan livre, ou l' ebook gratuit fondations , et vous serez en meilleure position pour juger dans quelle direction vous devez aller.

Créé 05/08/2008 à 21:28
source utilisateur

voix
2

L'approche que vous parlez est considéré comme un bon par de nombreux gens, moi y compris! L'apprentissage de cette approche, il faudra un certain effort, mais ne vous laissez pas rebuter!

Qu'en est- il juste essayer un petit projet avec LINQ to SQL ? Peut-être un trouver projet de référence bien sur google code , et étudier comment les autres ont travaillé avec elle.

Il est un outil simple et vous permettra de vous familiariser avec quelques-unes des questions qui se présentent avec des objets cartographiques à des bases de données.

Vous serez alors en mesure d' avoir une idée de ce , et de décider si elle vaut la courbe d'apprentissage.

Il y aura de nouveaux concepts pour saisir et expérimenter, des choses comme:

  • Unité de travail : Lorsque vous exécutez Enregistrer et Supprimer etc, un ORM a tendance à ne pas le faire immédiatement, alors qu'une volonté DAL base recordset. Cela peut être surprenant que vous aurez besoin d'apprendre un peu à ce sujet. Renseignez - vous sur l' unité de modèle de travail pour obtenir une compréhension de ce sujet .
  • Les opérations en masse sont un problème avec OR / M. Un lecteur de données peut efficacement itérer des milliers de lignes, mais avec un ORM vous devez être prudent lorsque vous travaillez avec de grands lots d'objets. Encore une fois, un à lire sur.
  • Les associations semblent super quand peut faire des choses comme , customer.Orders.Countmais ils sont aussi la cause de nombreux problèmes. Vous aurez besoin de trouver des pratiques sécuritaires à suivre lorsque l'on travaille avec les associations.

... pour ne citer que quelques-uns.

Pour commencer, ne vous inquiétez pas sur l'héritage et d'autres choses, il suffit de commencer simple et avoir des entités simples qui correspondent aux tables.

Essayez de les utiliser de la même manière que vous utiliseriez votre DAL existante. Puis commencer à expérimenter avec les associations.

Alors peut - être essayer de mettre un comportement plus dans vos entités. Si vous commencez à aimer cela, et le sentiment que vous avez besoin de plus de fonctionnalités, envisager d' essayer une plus ORM fonctionnalité riche comme Lightspeed ou NHibernate .

J'espère que cela t'aides!

Créé 03/10/2008 à 11:07
source utilisateur

voix
2

En aucun cas, est MVC le seul modèle de conception pour le web, mais il est utile.

L'adoption de juste le « M » va payer des dividendes, à mon avis, même si vous ne pouvez pas / n'adopter le « V » ou « C ».

Créé 05/08/2008 à 21:13
source utilisateur

voix
0

Pour moi , il semble que vous essayez de faire ce que LINQ peut déjà le faire pour vous. Si vous êtes coincé dans un cadre ancien dans lequel vous ne pouvez pas utiliser, je suggérerais que vous utilisez Subconic ( http://subsonicproject.com/ ) au lieu d'avoir à créer manuellement tous ces objets du modèle à la main.

J'ai eu un projet où je me trouvais dans une situation similaire et changé à subsoniques à mi-chemin avec des résultats fantastiques. Et le développement rapide beaucoup plus facile à lire / code d'utilisation.

Créé 26/09/2008 à 15:41
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more