Я создал Репозиторий, который получает пользовательские детали
Public Function GetUserByOpenID(ByVal openid As String) As User Implements IUserRepository.GetUserByOpenID
Dim user = (From u In dc.Users
Where u.OpenID = openid
Select u).FirstOrDefault
Return user
End Function
И я хотел бы смочь раскрыть те детали, ЕСЛИ пользователь зарегистрирован И ЕСЛИ кэшированные данные являются пустыми.
Что лучший способ состоит в том, чтобы создать Пользовательский объект, который содержит все пользовательские детали, и сохраните его через весь сайт на время их визита?
Я пробовал это в своем Global.asax, но я не действительно счастливые Переменные сеанса использования. У меня был бы отдельный объект со всеми подробностями внутри.
Private Sub BaseGlobal_AcquireRequestState(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.AcquireRequestState
If Session("UserName") Is Nothing AndAlso User.Identity.IsAuthenticated Then
Dim repo As UrbanNow.Core.IUserRepository = New UrbanNow.Core.UserRepository
Dim _user As New UrbanNow.Core.User
_user = repo.GetUserByOpenID(User.Identity.Name)
Session("UserName") = _user.UserName()
Session("UserID") = _user.ID
End If
End Sub
Хранить в переменной сеанса полный объект пользователя, а не только члены.
//store
Session("UserInfo") = _user
//read
Dim user = DirectCast(Session("UserInfo"), UrbanNow.Core.User)
(Код конвертируется в vb.net онлайн-конвертером, я не знаю ни одного vb.net, извиняюсь за синтаксические ошибки)