Ma configuration est MySql.Data.MySqlClient v6.9.8.0
et Microsoft.Practices.EnterpriseLibrary.Data v6.0.0
. Le programme est un programme de longue durée qui exécute en continu l'écoute des tâches, puis exécute le travail avec une certaine forme d'action de base de données (en fonction de ce que la demande était.) Parfois, les demandes seront l'une après l'autre, parfois il y aura être plusieurs heures entre eux. (. Pas tout le temps - ce sont des problèmes intermittents)Mise en pool des connexions MySQL avec Microsoft Enterprise Library
J'ai essayé d'utiliser Pooling=true
dans la chaîne de connexion mais il me cause beaucoup de problèmes
Voici un exemple:
[MySqlException (0x80004005): Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Reading from the stream has failed.]
La désactivation de pooling
résout le problème mais, en même temps, ralentit les requêtes car nous ne pouvons pas réutiliser les connexions. J'ai cherché en ligne et beaucoup de gens ont ce même problème et le seul correctif/solution de contournement que j'ai trouvé est Pooling=false
que je préfère éviter si possible.
Voici un exemple de mon code de requête:
Database db = this.GetDatabase(databaseName);
List<dynamic> results = new List<dynamic>();
// Run the sql query
using (DbCommand dbCommand = db.GetSqlStringCommand(query))
{
foreach (var parameter in inParameters)
{
db.AddInParameter(dbCommand, parameter.Key, parameter.Value.Item1, parameter.Value.Item2);
}
foreach (var parameter in outParameters)
{
db.AddOutParameter(dbCommand, parameter.Key, parameter.Value.Item1, parameter.Value.Item2);
}
using (IDataReader dataReader = db.ExecuteReader(dbCommand))
{
IDictionary<string, object> instance;
do
{
// Read each row
while (dataReader.Read())
{
instance = new ExpandoObject() as IDictionary<string, object>;
// Populate the object on the fly with the data
for (int i = 0; i < dataReader.FieldCount; i++)
{
instance.Add(dataReader.GetName(i), dataReader[i]);
}
// Add the object to the results list
results.Add(instance);
}
} while (dataReader.NextResult());
}
return results;
}
Toutes les idées?
Quel EntLib.Data -> MySql "adaptateur" utilisez-vous? http://entlibcontrib.codeplex.com/releases Je n'en vois pas codé EntLib 6. – granadaCoder
Je l'ai installé sous forme de Nuget, c'est la version qui s'affiche pour moi –
Veuillez rapporter le paquet et la version de nuget. Trouvez simplement la ligne dans votre fichier "packages.config". – granadaCoder