Set database timeout in Entity Framework

后端 未结 9 1773
囚心锁ツ
囚心锁ツ 2020-11-29 16:42

My command keeps timing out, so I need to change the default command timeout value.

I\'ve found myDb.Database.Connection.ConnectionTimeout, but it\'s

9条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-29 17:28

    I extended Ronnie's answer with a fluent implementation so you can use it like so:

    dm.Context.SetCommandTimeout(120).Database.SqlQuery...

    public static class EF
    {
        public static DbContext SetCommandTimeout(this DbContext db, TimeSpan? timeout)
        {
            ((IObjectContextAdapter)db).ObjectContext.CommandTimeout = timeout.HasValue ? (int?) timeout.Value.TotalSeconds : null;
    
            return db;
        }
    
        public static DbContext SetCommandTimeout(this DbContext db, int seconds)
        {
            return db.SetCommandTimeout(TimeSpan.FromSeconds(seconds));
        } 
    }
    

提交回复
热议问题