Первый пример не может работать, пока вы не сделаете это:
Dim u as User = Ctype(Session("User"),User)
u.name = "new name"
(From x in ctx.Users).First()
ctx.Users.ApplyCurrentValues(u)
ctx.SaveChanges
ApplyCurrentValues принимает значения только из переданного объекта и копирует их в тот же тип объекта, который должен быть загружен и присоединен к контексту.
Второй пример, показанный @Mlantosca, не может работать, потому что вы сохраняете сущность в сеансе и не отсоединяли ее. Чтобы это работало, вы должны использовать:
Dim u as User = (From x in ctx.Users).First()
ctx.Detach(u)
Session("user") = u