我正在用实体框架4开发一个ASP.Net MVC 3 Web应用程序。当用户登录到我的应用程序时,我想将他们的用户实体(firstName、lastName等)存储在会话中,然后可以在整个应用程序中访问该会话。
我知道这可能不是一个好主意,因为当ObjectContext关闭/处置时,用户实体就会分离,用户详细信息可能会丢失。
我认为另一种方法可以是,当用户登录时,将userID(主键)分配给会话变量,即:
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
我采取的这种方法是正确的,还是有更好的方法?
如有任何反馈,我们将不胜感激。