/// <summary>
        ///		Creates a new Connection
        /// </summary>
        /// <returns></returns>
        public virtual string RegisterConnection()
        {
            var connectionId    = GenerateUniqueId();
            var connectionTuple = new ConnectionTuple()
            {
                DbAccessLayer         = _accessLayerFactory(),
                ConnectionId          = connectionId,
                LastOperationReceived = DateTime.Now
            };

            ConnectionTuples.TryAdd(connectionId, connectionTuple);
            connectionTuple.DbAccessLayer.Database.Connect();
            return(connectionId);
        }
        private static IDbCommand ToCommand(RemotingStrategyExternal.RemotingDbCommandData command,
                                            ConnectionTuple conData)
        {
            var dbCommand = conData.DbAccessLayer.Database.CreateCommand(command.CommandText);

            dbCommand.CommandType    = command.CommandType;
            dbCommand.CommandTimeout = command.CommandTimeout == 0 ? 30 : command.CommandTimeout;
            foreach (var remotingDbParameterData in command.Parameters)
            {
                var dbDataParameter = dbCommand.CreateParameter();
                dbCommand.Parameters.Add(dbDataParameter);
                dbDataParameter.Precision     = remotingDbParameterData.Precision;
                dbDataParameter.Scale         = remotingDbParameterData.Scale;
                dbDataParameter.DbType        = remotingDbParameterData.DbType;
                dbDataParameter.Direction     = remotingDbParameterData.Direction;
                dbDataParameter.ParameterName = remotingDbParameterData.ParameterName;
                dbDataParameter.SourceVersion = remotingDbParameterData.SourceVersion;
                dbDataParameter.Value         = remotingDbParameterData.Value;
                dbDataParameter.Size          = remotingDbParameterData.Size;
            }

            return(dbCommand);
        }