Amenez le module de données à fonctionner avec & # 8212; pass-Store-use utilise une connexion dans un module de données réutilisable

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

Question

Je souhaite séparer le module de données d'un site dans un ensemble (un seul fichier dll), Quel est le meilleur moyen de récupérer-stocker et de transmettre le ConnectionString du site pour l'utilisation de l'application Web. À l'intérieur de l'assemblage de données, j'ai créé une classe statique appelée ConnectionManager. Il possède une propriété nommée DatabaseConnectionName , que je souhaite transmettre et stocker le nom de la connexion qui se trouve dans le fichier Web.Config. Dans cette stratégie, j'ai décidé d'obtenir le nom et d'établir la connexion dans le temps de chargement du site Web dans le fichier Global.asax et de lier celle de la propriété mentionnée précédemment (DatabaseConnectionName). Mais, c’est la stratégie que j’ai utilisée, je ne sais pas quel est le schéma commun pour faire ce travail.

Parties du code: =================================== = [------------ Global.asax ------------]

the code in the site that makes the Data module accessible for the site
    void Application_Start(object sender, EventArgs e) 
    {
         OurCompany.Data.ConnectionManager.DatabaseConnectionName = "MasterConnection";
    }

[------------ Classe ConnectionManager ------------] c'est dans le module de données en dehors du site

public static class ConnectionManager
{

    public static SqlConnection  GetMasterConnection()
    {
        string connectionString = ConfigurationManager.ConnectionStrings[**DatabaseConnectionName**].ConnectionString;
        SqlConnection conn;     
        //conn.Open();
        conn = new SqlConnection(connectionString);
        return  conn;
    }

    private static string **databaseConnectionName**;
    public static string DatabaseConnectionName
    {
        get
        {
            return databaseConnectionName;
        }
        set
        {
            databaseConnectionName = value;
        }
    }

== FIN ========================================== ================

--- Les questions sont les suivantes: ---

  1. Où stocker la connexion? (il y avait une propriété dans la classe ConnectionManager, theCompany.Data.ConnectionManager.DatabaseConnectionName)

  2. Quand établissez-vous cette connexion? (ici à Global.asax Application Load time)

  3. Quelle est la meilleure méthode pour stocker de telles informations   : SessionState ou ViewState ou une simple propriété

  4. Cette stratégie est-elle bonne? Savez-vous une meilleure façon ou  le modèle commun pour cela?

Merci pour toute information - MHM -

Était-ce utile?

La solution

Quelques réflexions ...

  1. Vous ne devriez pas stocker ni vous accrocher à une connexion de base de données ouverte. Ouvrez la connexion, effectuez vos opérations de base de données, puis fermez immédiatement. Appliquez la règle d’acquérir tard, libérez tôt.

  2. Voir le point 1.

  3. Ne stockez pas les connexions de base de données en état de session. Voir le point 1 à nouveau. Si vous voulez parler de la chaîne de connexion, lisez-la simplement à partir du gestionnaire de configuration lorsque vous en avez besoin. Il est déjà mis en cache pour vous, ne réinventez pas et n’emballez pas la roue.

  4. Je vous suggère de jeter un coup d'œil aux modèles et pratiques de la bibliothèque d'entreprise qui élimine bon nombre des modèles courants de gestion de l'accès aux données:

http://www.codeplex.com/entlib

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