Método de actualización para el repositorio genérico de Entity Framework

Tengo un repositorio como ese:

public class Repository<T> : IRepository<T> where T : class 
{
    private readonly IRepositoryContext _repositoryContext;

    public Repository(IRepositoryContext repositoryContext)
    {
        _repositoryContext = repositoryContext;
        _objectSet = repositoryContext.GetObjectSet<T>();
    }

    public virtual void Update(T entity)
    {
        ObjectSet.AddObject(entity);
        _repositoryContext.ObjectContext.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
        _repositoryContext.SaveChanges();
    }
  }

Ahora que realmente funciona para todas las propiedades escalares de la entidad, pero todas las otras entidades que se asociaron con las propiedades de la entidadtypeOf(T), no me importa que el estado de la entidad se modifique, y EF simplemente agrega nuevos datos.

Entonces, si lo haces por ejemploRepository<Student>.Update(), y solo cambió el nombre, encontrará el Estudiante correcto y cambiará su nombre, pero también cambiará el Campus, aunque ya tiene un Campus asociado con ese estudiante, se creará nuevamente con un CampusId diferente.

Muéstrame la forma correcta de hacer actualizaciones en esta situación.