public User Create(User source)
        {
            User actual = null;
            SqlConnection connection = ConnectionFactory.GetConnection ();
            SqlCommand command = new SqlCommand (QUERY_CREATE, connection);

            command.Parameters.AddWithValue ("@Name", source.Name);
            command.Parameters.AddWithValue ("@Password", source.Password);
            command.Parameters.AddWithValue ("@Email", source.Email);

            try
            {
                connection.Open ();
                int id = (int) command.ExecuteScalar ();
                actual = GetById (id);
            }
            finally
            {
                connection.Close ();
            }
            return actual;
        }
        private User ReadUser(SqlDataReader reader)
        {
            User user = new User ();

            user.Id = (int) reader["Id"];
            user.Name = reader["Name"].ToString ();
            user.Password = reader["Password"].ToString ();
            user.Email = reader["Email"].ToString ();

            return user;
        }
        public User Update(User source)
        {
            User me = CurrentUser.retrieve ();

            SqlConnection connection = ConnectionFactory.GetConnection ();
            SqlCommand command = new SqlCommand (QUERY_UPDATE, connection);

            command.Parameters.AddWithValue ("@Id", me.Id);
            command.Parameters.AddWithValue ("@Name", source.Name == null ? me.Name : source.Name);
            command.Parameters.AddWithValue ("@Password", source.Password == null ? me.Password : source.Password);
            command.Parameters.AddWithValue ("@Email", source.Email == null ? me.Email : source.Email);

            try
            {
                connection.Open ();
                command.ExecuteScalar ();
            }
            finally
            {
                connection.Close ();
            }

            return GetById (me.Id);
        }