Пользовательский объект хранилища ASP.Net MVC В сеансе

Я разрабатываю веб-приложение ASP.Net MVC 3 с Entity Framework 4. Когда пользователь входит в мое приложение, я хотел бы сохранить его пользовательский объект (firstName, lastName и т. Д.) В сеансе, к которому затем можно будет получить доступ в течение всего заявление.

Я понимаю, что это может быть не очень хорошей идеей, потому что, когда ObjectContext закрывается / удаляется, объект User отключается, и данные пользователя могут быть потеряны.

Я подумал, что другой метод может заключаться в том, чтобы при входе пользователя в систему назначить идентификатор пользователя (первичный ключ) переменной сеанса, например:

HttpContext.Current.Session["currentUserID"] = user.userID;

Затем создать класс в классе UserService, например:

public static User CurrentUser
    {

        get
        {
            return Data.DBEntities.Users.Where(u => u.userID == HttpContext.Current.Session["currentUserID"]).FirstOrDefault();
        }

    }

Который должен вернуть Пользовательский объект на основе переменной сеанса currentUserID. Однако у меня это не работает, я получаю пару ошибок

Cannot convert lambda expression to type 'string' because it is not a delegate type
Delegate 'System.Func<Asset.Model.User,int,bool>' does not take 1 arguments

Правильно ли я использую этот подход или есть способ лучше?

Любая обратная связь будет очень признательна.

5
задан tcode 14 February 2011 в 12:47
поделиться