/// <summary>
        /// Modifies an execution execution context and adds more information to i
        /// </summary>
        /// <param name="dbContext"></param>
        /// <param name="ctx"></param>
        public void ModifyExistingExecutionContext(DbContext dbContext, ExecutionContext ctx) {
            if (dbContext == null) {
                return;
            }

            ctx.Values["ConnectionId"] = GetConnectionId(dbContext.Database.Connection);
            ctx.Values["ConnectionString"] = dbContext.Database.Connection.ConnectionString;
            ctx.Values["ContextId"] = this.GetContextNumber(dbContext);
        }
        /// <summary>
        /// Creates an <see cref="Common.Protocol.ExecutionContext"/> instance or returns <c>null</c>
        /// </summary>
        /// <returns></returns>
        public ExecutionContext CreateExecutionContext(DbContext dbContext) {
            if (dbContext == null) {
                return null;
            }

            ContextIdentifier contextId = this.GetContextNumber(dbContext);

            ExecutionContext ctx = new ExecutionContext(contextId, "DbContext instance #" + contextId);
            ctx.Values["ConnectionId"] = GetConnectionId(dbContext.Database.Connection);
            ctx.Values["ConnectionString"] = dbContext.Database.Connection.ConnectionString;

            return ctx;
        }