c# - Est-il préférable de créer des classes de modèle ou de s'en tenir à la classe d'utilitaire de base de données générique?

Translate

Nous avons une classe d'utilité simple en interne pour nos appels de base de données (un wrapper léger autour d'ADO.NET), mais je pense créer des classes pour chaque base de données / objet. Serait-il judicieux de le faire ou ne serait-il avantageux que si nous utilisions le framework MVC complet pour ASP.NET?

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);

En pensant à 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-ce exagéré? Je peux voir les avantages de la réutilisation, de la modification de la base de données et de la maintenance / lisibilité.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Cette question est chargée, conception axée sur les données vs conception axée sur le domaine. Pour toute application ayant un bon comportement, la conception pilotée par domaine doit être privilégiée. Les applications de reporting ou utilitaires ont tendance à mieux fonctionner (ou sont plus rapides à développer) avec une conception basée sur les données.

Ce que vous demandez, c'est "si mon entreprise doit changer fondamentalement la façon dont nous concevons notre code". En tant que domaine-freak, ma réaction instinctive est de crierOui. Cependant, en raison de la nature simple de votre question, je ne suis pas sûr que vous compreniez pleinement la portée du changement que vous proposez. Je pense que vous devriez en parler davantage à votre équipe.

Obtenez de la documentation, commeDDD d'Evanlivre, ou leebook gratuit sur les fondations, et vous serez alors mieux placé pour juger de la direction à prendre.

La source
Dan
Translate

MVC n'est en aucun cas le seul modèle de conception pour le Web, mais il est utile.

Adopter uniquement le «M» rapportera des dividendes, à mon avis, même si vous ne pouvez pas / ne voulez pas adopter le «V» ou le «C».

La source
Translate

L'approche dont vous parlez est considérée comme bonne par de nombreuses personnes, moi y compris! L'apprentissage de cette approche demandera un certain effort, mais ne vous laissez pas décourager!

Pourquoi ne pas essayer unpetit projet avec LINQ to SQL? Peut-être trouver unbeau projet de référencesurcode googleet étudiez comment les autres ont travaillé avec.

C'est un outil simple qui vous permettra de vous familiariser avec certains des problèmes liés au mappage d'objets à des bases de données.

Vous pourrez alorsavoir une idée, et décidez si cela en vaut la peine.

Il y aura de nouveaux concepts à saisiret expérimentez des choses comme:

  • Unité de travail: Lorsque vous exécutez Save and Delete, etc., un ORM a tendance à ne pas le faire immédiatement, alors qu'un DAL basé sur un jeu d'enregistrements le fera. Cela peut être surprenant, vous devrez donc en apprendre un peu plus à ce sujet. Renseignez-vous sur leModèle d'unité de travailpour comprendre cela.
  • Opérations en massesont un problème avec OR / M. Un lecteur de données peut parcourir efficacement 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 pour lire.
  • Les associationssemble génial quand peut faire des choses commecustomer.Orders.Countmais ils sont aussi la cause de nombreux problèmes. Vous devrez trouver des pratiques sécuritaires à suivre lorsque vous travaillez avec des associations.

... pour n'en nommer que quelques-uns.

Pour commencer, ne vous inquiétez pas de l'héritage et d'autres choses, commencez simplement par des entités simples qui correspondent à des tables.

Essayez de les utiliser de la même manière que vous utiliseriez votre DAL existant. Commencez ensuite à expérimenter les associations.

Ensuite, essayez peut-être de mettre plus de comportement dans vos entités. Si vous commencez à aimer cela et que vous pensez avoir besoin de plus de fonctionnalités, envisagez d'essayer un ORM plus riche en fonctionnalités commeVitesse de la lumièreouNHibernate.

J'espère que cela t'aides!

La source
Translate

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

J'avais un projet dans lequel j'étais dans une situation similaire et je suis passé au subsonique à mi-chemin avec des résultats fantastiques. Développement plus rapide et code BEAUCOUP plus facile à lire / utiliser.

La source