Modèle de conception pour la Couche d'Accès aux Données
Vous pourriez vous sentir ce sont les devoirs, j'en suis désolé. J'ai cherché mais ne pouvais pas trouver une réponse adéquate.
Donc ma question est:
J'ai plusieurs classes et chaque classe a une méthode pour enregistrer. J'ai donc créé une catégorie distincte de la base de données de la manipulation.
namespace HospitalMgt.Data
{
public static class DBConnection
{
public static string constr = "Data Source=ABD;Initial Catalog=HospitalMgt;User Id=sa;Password=123";
public static SqlConnection con;
// public static SqlCommand com;
public static SqlConnection OpenConnection()
{
con= new SqlConnection(constr);
con.Open();
return con;
}
}
}
Cependant, je ne pense pas qu'il convient de mettre en œuvre toutes les classes avec un DBConnection classe.
Ma question :
- Ce modèle de conception est adaptée pour surmonter ce problème?
- Est-il une bonne pratique pour créer DBConnection de la classe? (Ou devrait-il être une Interface)
J'ai trouvé quelques articles sur DA couches à l'aide de la méthode de Fabrique, mais à ma connaissance, ce modèle ne convient pas à ma situation.
Regardez le modèle de référentiel, il semble que cela pourrait vous aider.
Si l'ID d'Utilisateur et votre mot de code sont réels, vous devriez les cacher immédiatement.
Êtes-vous essayer de créer un Singleton? Si oui, vous le faites mal.
nan je ne suis pas essayer de singleton. je ne peux pas trouver de solution
Si vous pouvez utiliser d'autres bibliothèques, je voudrais suggérer à l'aide de Spring framework. Il décharge un tas de connexion à la base de la manipulation des trucs, permettant ainsi à votre implemnentation classe de look simple et propre.
Si l'ID d'Utilisateur et votre mot de code sont réels, vous devriez les cacher immédiatement.
Êtes-vous essayer de créer un Singleton? Si oui, vous le faites mal.
nan je ne suis pas essayer de singleton. je ne peux pas trouver de solution
Si vous pouvez utiliser d'autres bibliothèques, je voudrais suggérer à l'aide de Spring framework. Il décharge un tas de connexion à la base de la manipulation des trucs, permettant ainsi à votre implemnentation classe de look simple et propre.
OriginalL'auteur DevT | 2012-12-06
Vous devez vous connecter pour publier un commentaire.
Normalement, si je ne peux pas utiliser n'importe quel cadre, j'utilise à la fois le Référentiel et Active modèles.
Pour des raisons de simplicité, vous pouvez utiliser uniquement le modèle de Référentiel. J'ai l'habitude de le définir comme ceci:
Vous avez maintenant assez d'outils pour manipuler la base de données, mais si vous le souhaitez, vous pouvez utiliser la configuration Active.
Un exemple simple:
Évidemment, au moment de faire vos propres mises en œuvre, vous devez prendre en compte la sécurité des threads faisant une bonne utilisation de transactions, spécialement à travers les différentes entité dépôts.
Juste être sûr que vous voulez vraiment créer votre propre DAL, car il peut mettre fin à être généralement complexe, spécialement en essayant de développer le plus de solution générique.
Merci pour l'astuce! Je crois que j'ai fait ce code dans Notepad++ de ma tête, alors je ne pourrais pas le tester à ce moment là! Fix ajoutée!
OriginalL'auteur João Simões
Je vous suggère d'utiliser un ORM, Entity Framework ou NHibernate fera très bien l'affaire. Ensuite, vous n'avez pas à vous soucier de la base de données de contexte ou de créer des instructions SQL.
Pas de soucis avec ça. Mais pourquoi ne pas lire le code source de NHibernate pour apprendre à concevoir un référentiel. Ou de regarder l'Enregistrement Actif, il est plus facile à lire que NHibernate. Ou tout simplement google @Sergey a probablement fait (je ne donne u +1 @sergey).
ok.... merci encore...
OriginalL'auteur Richard Schneider
Tout d'abord, je tiens à vous recommander l'article Les Modèles de conception pour la Persistance des Données par Jeremy Miller.
Il y a quelques couche d'accès aux données sur les tendances:
vous êtes les bienvenus!
OriginalL'auteur Sergey Brunov
Je vous suggère d'utiliser un RepositoryBase pour tout cela, les opérations les plus courantes. Si vous décidez d'utiliser un ORM pour l'accès aux données, il est bon de réfléchir à la mise en œuvre de référentiels basés sur un Type Générique de référentiel.
Voici un bon article sur le sujet:
http://lostechies.com/jimmybogard/2009/09/03/ddd-repository-implementation-patterns/
OriginalL'auteur Pablo Rodríguez
Son trop vieux, mais juste venu autour de cette question et ne pouvait pas résister à poster mes pensées.
J'ai trouvé Référentiel avec UnitOfWork avec certains descente ORM est une bonne approche. Cela minimise la plupart des questions.
La UoW mentionné dans le lien ci-dessus peut être injecté dans le Dépôt. Qui augmente la flexibilité de l'utilisation. Aussi, tous les DB code de Communication est centralisée en un seul lieu. L'exemple n'est pas complète, mais un point de départ.
Modèle de référentiel mentionné dans le lien ci-dessus est en fait une classe générique de base. Vous pouvez créer une nouvelle classe pour chaque béton Référentiel qui en découle.
Générique dépôt est considéré comme un anti-modèle; il y a beaucoup beaucoup d'articles sur internet qui l'explique.
Pourquoi générique référentiel est l'anti-modèle?
GetById()
, identifiant les types peuvent être différentes.Je vous suggère de lire ces (Un, Deux, Trois, Quatre, Cinq) articles expliquant pourquoi générique référentiel est un anti-pattern.
Solution:
Dans tous les cas, ne pas exposer Générique Référentiel de code d'appel. Aussi, ne pas exposer
IQueryable
de béton dépôts.OriginalL'auteur Amit Joshi