C # Data Connections Meilleure pratique?

Ok, donc c'est l'une de ces opinions sujets, mais en fonction de vos connaissances, de l'opinion, et la pratique actuelle, quelle est la meilleure façon de définir le scénario suivant?

Je suis en train de construire une vaste application de saisie de données, et par de vastes je veux dire que je n'ai que les bases de l'installation qui intègre autour de 15 à 25% de l'ensemble du programme et j'ai environ 15 formulaires sont en partie le programme d'installation. (Ils ont encore besoin de travail), je suis à l'aide de SQL Compact 4.0 comme mon backend de base de données, je n'ai pas vraiment besoin d'une plus vaste base de données que je ne suis pas stocker un MMO de données, et pour l'instant ce n'est qu'une application locale.

J'aimerais être en mesure de le configurer pour être affiché comme une seule fenêtre qui vient de changements à différentes pages basées sur un système de menu, mais je n'arrive pas à trouver un bon tutoriel sur comment cela pourrait se faire, donc si quelqu'un sait, merci de m'éclairer.

Le scénario en question, cependant, est de savoir comment vous connecter à des bases de données. Je suis l'aide de 2 SQLCE bases de données, qui stocke des données constantes qui est basé sur les services et le personnel, et un deuxième qui stocke l'évolution constante des données ou de nouvelles données qui est entré en fonction à la première base de données. J'ai vu beaucoup de différentes méthodes sur la façon de mettre en place et je suis actuellement en utilisant l'une dans laquelle j'ai la classe baseform que toutes les autres formes hérite. Dans le la classe baseform j'ai des méthodes et des variables qui sont communs à plusieurs formes afin de réduire la quantité de code qui se répète.

Cela comprend les chaînes de connexion pour les deux bases de données, et 2 méthodes d'ouvrir une connexion à l'un ou l'autre. Comme:

internal SqlCeConnection dataConn = new SqlCeConnection(@"Data Source = |DataDirectory|\opi_data.sdf");
internal SqlCeConnection logConn = new SqlCeConnection(@"Data Source = |DataDirectory|\opi_logs.sdf");
internal SqlCeCommand command;

internal void openDataConnection() //Opens a connection to the data tables 
        {
            try
            {
                if(dataConn.State == ConnectionState.Closed)
                    dataConn.Open();
            }
            catch(SqlCeException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        internal void openLogConnection() //Opens a connection to the log tables
        {
            try
            {
                if(logConn.State == ConnectionState.Closed)
                    logConn.Open();
            }
            catch (SqlCeException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

Alors à chaque fois que j'ai besoin d'une connexion ouverte, j'ai simplement appeler l'open méthode de connexion qui correspond à la base de données j'ai besoin d'accéder à et puis fermez-le dans une instruction enfin. De cette manière, un lien n'est jamais ouvert, pour très longtemps, juste quand c'est nécessaire. Bien sûr, cela signifie qu'il y a beaucoup d'appels à l'open d'autres méthodes de connexion. Alors, est-ce la meilleure façon de mettre en œuvre ce type de scénario, ou il y a de meilleures façons?

Est-il préférable de simplement ouvrir une connexion en tant que bientôt en tant que charge d'un formulaire puis de le fermer lorsque le formulaire se ferme? J'ai instances où de multiples formes sont ouvertes en même temps et chacun aurait probablement besoin d'une connexion ouverte, les bases de données donc, si l'on ferme ensuite les autres devraient être vissée de droite? Ou dois-je ouvrir une connexion à la fois des bases de données sur le lancement d'application? Toute entrée serait appréciée. Merci.

source d'informationauteur Josh C.