Délai d'attente en opération e / s
J'ai été en utilisant une requête qui a tiré en arrière d'une grande quantité d'peuplée propriétés de navigation. Essentiellement, elle ressemblait à ça:
using( var context = new MyApplicationContext() )
{
DbSet<BaseTable> dbSet = context.Set<BaseTable>();
IQueryable<BaseTable> query = dbSet;
query = query.Include(entity => entity.T.C);
query = query.Include(entity => entity.TC.Select(tc => tc.T.M));
query = query.Include(entity => entity.TC);
query = query.Include(entity => entity.W.FW.F.S);
query = query.Include(entity => entity.W.FW.P);
query = query.Include(entity => entity.W.PL.P);
query = query.Include(entity => entity.W.PL);
query = query.Include(entity => entity.W.E);
query = query.Include(entity => entity.E);
query = query.Where( set of conditions );
List<BaseTable> Loaded = query.ToList();
}
Toutefois, l'exécution de ce code généré une erreur
Délai d'attente IO opération
[TimeoutException: Délai en opération e /s]
MySql.Les données.MySqlClient.TimedStream.StopTimer() +168
MySql.Les données.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 décalage, Int32 nombre) +148
Système.IO.BufferedStream.Read(Byte[] tableau, Int32 décalage, Int32 comte de) +262
MySql.Les données.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 décalage, Int32 nombre) +86
MySql.Les données.MySqlClient.MySqlStream.LoadPacket() +110
MySql.Les données.MySqlClient.MySqlStream.ReadPacket() +59
MySql.Les données.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) +100
MySql.Les données.MySqlClient.Le pilote.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId) +54
MySql.Les données.MySqlClient.Le pilote.NextResult(Int32 statementId, Boolean force) +145
MySql.Les données.MySqlClient.MySqlDataReader.NextResult() +524
MySql.Les données.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior comportement) +1939
Comment puis-je permettre à cette requête pour avoir assez de temps à charger?
OriginalL'auteur Travis J | 2014-01-16
Vous devez vous connecter pour publier un commentaire.
Ce que vous devez faire est d'augmenter le délai d'expiration de commandes de la propriété.
Dans le cadre de l'entité, le contexte utilisé hérite de
DbContext
. C'est unIObjectContextAdapter
, mais ne contient pas un accès facile à laObjectContext
méthodes. Ainsi, dans le but d'accéder à la commande délai d'attente de la propriété, vous aurez besoin de passer par laBase
propriété de laDbContext
.Maintenant, votre requête peut avoir le temps dont il a besoin pour tirer une plus grande quantité de données si nécessaire.
C'est juste pour montrer un paramètre variable dans le code. Vous pouvez aussi le mettre dans la chaîne de connexion, mais l'idée était probablement que vous n'avez pas toujours envie de ce long délai d'attente pour être ensemble.
OriginalL'auteur Travis J
utiliser ce code dans votre Chaîne de Connexion dans le web.config
"
default command timeout=0
"OriginalL'auteur Aftab Ahmed