I / O timeout

I used a query that dropped a large number of populated navigation properties. Essentially, it looked like this:

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();
}

However, an error occurred while running this code

-
[TimeoutException: -]    MySql.Data.MySqlClient.TimedStream.StopTimer() +168
   MySql.Data.MySqlClient.TimedStream.Read( Byte [], Int32, Int32) +148
   System.IO.BufferedStream.Read( Byte [], Int32, Int32) +262
   MySql.Data.MySqlClient.MySqlStream.ReadFully( , Byte [], Int32, Int32) +86
   MySql.Data.MySqlClient.MySqlStream.LoadPacket() +110
   MySql.Data.MySqlClient.MySqlStream.ReadPacket() +59
   MySql.Data.MySqlClient.NativeDriver.GetResult(Int32 & affectedRow, Int64 & insertId) +100
   MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32 & affectedRows, Int64 & insertId) +54
   MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, ) +145
   MySql.Data.MySqlClient.MySqlDataReader.NextResult() +524
   MySql.Data.MySqlClient.MySqlCommand.ExecuteReader( CommandBehavior) +1939

?

+4
2

, - .

DbContext. IObjectContextAdapter, ObjectContext. , - , Database DbContext.

using( var context = new MyApplicationContext() )
{
    DbSet<BaseTable> dbSet = context.Set<BaseTable>();
    IQueryable<BaseTable> query = dbSet;
   //set an increased command timeout by accessing Database property
   //on the context
   context.Database.CommandTimeout = 300;//in seconds (5 minutes)
    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();
}

, .

+9

web.config

"default command timeout=0"

 "server=localhost;Database=Database;uid=;pwd=;Allow User Variables=True;Convert Zero Datetime=True;default command timeout=0"
+2

All Articles