Est-il préférable de créer des classes de Modèle ou un bâton avec des génériques de base de données de l'utilitaire de classe?

StackOverflow https://stackoverflow.com/questions/2778

Question

Nous avons un utilitaire simple classe interne à nos appels de base de données (un wrapper autour de la lumière ADO.NET), mais je pense à la création de classes pour chaque base de données/objet.Serait-il être intelligent chose à faire, ou ne serait-ce que d'avantages, si nous étions à l'aide de la pleine framework MVC pour ASP.NET?

Donc, nous avons ceci:

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

La pensée de faire cela:

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-il être intelligent, ou serait-il exagéré?Je peux voir les avantages pour la réutilisation, la modification de la base de données, et l'entretien et la lisibilité.

Était-ce utile?

La solution

Cette question est chargé, piloté par les données de conception vs domain driven design.Pour toute application qui a une bonne quantité de comportement, alors domain driven design doit être préféré.Création de rapports ou d'applications de services publics ont tendance à travailler mieux (ou sont plus rapides à développer) avec les données de conception orientée.

Ce que vous me demandez, c'est "mon entreprise font un changement fondamental dans la façon dont nous concevons notre code".Comme un domaine-freak, ma réaction instinctive est de crier oui.Cependant, par la simple nature de votre question, je ne suis pas sûr de bien comprendre la portée de la modification que vous proposez.Je pense que vous devriez en parler à votre équipe.

Obtenir certains documents, tels que Evan DDD livre, ou le libre fondations ebook, et alors vous serez dans une meilleure position pour juger de quelle direction vous devez aller.

Autres conseils

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

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

L'approche que vous discutez est considéré comme bon par les gens, moi inclus!L'apprentissage de cette approche nécessitera un effort, mais ne laissez pas cela vous rebute!

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

C'est un outil simple, et permettra de vous familiariser avec quelques-unes des questions qui sont à l'origine de la cartographie des objets de bases de données.

Vous serez alors en mesure de obtenir une sensation pour elle, et décider si ça 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'un jeu d'enregistrements en fonction DAL.Cela peut être surprenant de sorte que vous aurez besoin d'apprendre un peu à ce sujet.Lire sur le Motif d'unité de Travail afin d'obtenir une compréhension de ce.
  • Opérations En Bloc sont un problème OU/M.Un lecteur de données permettent de parcourir des milliers de lignes, mais avec un ORM, vous devez être prudent lorsque vous travaillez avec de grands lots d'objets.Encore une fois, pour lire sur.
  • Les Associations semble grand quand peut faire des trucs comme customer.Orders.Count mais ils sont aussi la cause de nombreux problèmes.Vous aurez besoin de trouver certaines pratiques sécuritaires à suivre lorsque l'on travaille avec des associations.

...pour n'en citer que quelques-unes.

Pour commencer, ne vous inquiétez pas à propos de l'héritage et des choses, il suffit de commencer simple et simple des entités de la carte de tables.

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

Alors peut-être essayer de mettre plus de comportements de vos entités.Si vous commencer à aimer cela, et de sentir que vous besoin de plus de fonctionnalités, envisager d'essayer un plus riche en fonctionnalités, ORM comme Lightspeed ou NHibernate.

Espérons que cette aide!

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

J'avais un projet où j'ai été dans une situation identique et changé à subsonique à mi-chemin à travers avec des résultats fantastiques.Le développement plus rapide et BEAUCOUP plus facile à lire/utiliser le code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top