Ceci est mon premier post sur StackOverflow, donc s'il vous plaît soyez doux ...ADO.NET les meilleures pratiques pour la connexion et DataAdaptor objet Scope
J'ai quelques questions concernant le champ d'objet pour ADO.NET.
Lorsque je me connecte à une base de données, j'utilise généralement le code comme ceci:
OleDbConnection conn = new OleDbConnection("my_connection_string");
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * from Employees", conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
DataTable dt = new DataTable();
adapter.Fill(dt);
conn.Close();
conn.Dispose();
Disons que je lie le DataTable résultant à un contrôle du réseau et que mes utilisateurs puissent modifier le contenu de la grille. Maintenant, quand mes utilisateurs appuient sur un bouton Enregistrer, je dois appeler ce code:
adapter.Update(dt);
Voici mes questions:
1) Dois-je conserver l'objet de l'adaptateur que j'ai créé quand je l'origine chargé le datatable, ou puis-je créer un autre objet adaptateur dans l'événement de clic sur le bouton Enregistrer pour effectuer la mise à jour?
2) Si je dois conserver l'objet adaptateur d'origine, dois-je également garder l'objet de connexion disponible et ouvert? Je comprends le modèle déconnecté de ADO.NET - je suis juste confus sur la portée de l'objet quand il est temps de mettre à jour la base de données. Si quelqu'un pouvait me donner quelques conseils sur les meilleures pratiques pour ce scénario, je l'apprécierais grandement!
Merci à l'avance ...
Les adaptateurs de données sont capables d'ouvrir implicitement des connexions, maintenant je ne suis pas sûr de le faire dans une instruction using, mais vous ne pouvez pas supprimer la ligne conn.Open() et laisser l'adaptateur dataadaptor ouvrir la connexion. – GordonB
Bon point. Je l'ai même mentionné sous 2). :-) Je vais mettre à jour l'exemple de code –
Can adaptateur de données peut être un bon choix en cas de dumping des millions d'enregistrements (par exemple: 2-3 millions d'enregistrements que j'ai dans mon datatable) dans la base de données ??? –