/// <summary> /// Close all db context /// </summary> public static void CloseAllDbContext() { HttpContext context = HttpContext.Current; if (context != null && context.Session != null) { EFDbContextStorage ctxStorage = context.Session[STORAGE_KEY] as EFDbContextStorage; if (ctxStorage != null) { foreach (EFDbContext ctx in ctxStorage.GetAllDbContexts()) { if (ctx.Database.Connection.State == System.Data.ConnectionState.Open) { ctx.Database.Connection.Close(); } if (ctx.ObjectContext.Connection.State == System.Data.ConnectionState.Open) { ctx.Database.Connection.Close(); } ctx.ObjectContext.Dispose(); ctx.Dispose(); } context.Session.Remove(STORAGE_KEY); } } }
/// <summary> /// Get all DB Context /// </summary> /// <returns></returns> public static IEnumerable <EFDbContext> GetAllEFDbContext() { HttpContext context = HttpContext.Current; if (context != null && context.Session != null) { EFDbContextStorage ctxStorage = context.Session[STORAGE_KEY] as EFDbContextStorage; return(ctxStorage.GetAllDbContexts()); } else { return(null); } }
/// <summary> /// Add DBContext to store /// </summary> /// <param name="key"></param> /// <param name="dbContext"></param> public static void AddEFDbContextToStore(string key, EFDbContext dbContext) { HttpContext context = HttpContext.Current; if (context != null && context.Session != null) { EFDbContextStorage ctxStorage = context.Session[STORAGE_KEY] as EFDbContextStorage; if (ctxStorage == null) { ctxStorage = new EFDbContextStorage(); } ctxStorage.SetEFDbContextForKey(key, dbContext); context.Session[STORAGE_KEY] = ctxStorage; } }
/// <summary> /// Get DB context for key (Per session) /// </summary> /// <param name="key"></param> /// <returns></returns> public static EFDbContext GetEFDbContextForKey(string key) { EFDbContext dbContext = null; HttpContext context = HttpContext.Current; if (context != null && context.Session != null) { EFDbContextStorage ctxStorage = context.Session[STORAGE_KEY] as EFDbContextStorage; if (ctxStorage != null) { dbContext = ctxStorage.GetEFDbContextForKey(key); } } return(dbContext); }