我需要将用户设置(如地址、访问权限等)存储在会话/缓存中,以便通过基本控制器(MVC 项目)访问它们。
当我尝试User.Address
从会话中到达时,可以想象它说:
ObjectContext 实例已被释放,不能再用于需要连接的操作。
地址是用户实体的导航属性。
我不想使用 DTO。
有什么解决方法吗?
谢谢。
我需要将用户设置(如地址、访问权限等)存储在会话/缓存中,以便通过基本控制器(MVC 项目)访问它们。
当我尝试User.Address
从会话中到达时,可以想象它说:
ObjectContext 实例已被释放,不能再用于需要连接的操作。
地址是用户实体的导航属性。
我不想使用 DTO。
有什么解决方法吗?
谢谢。
我同意格特的观点,但我更喜欢这样写。(用于编译时错误检查)
public User GetUser(int userId)
{
using (var db = new MyContext())
{
return db.Users.Include( p => p.Address).Single(u => u == userId);
}
}
当您从数据库中获取用户时,您必须Include
提供地址。例如,像这样的东西(在存储库或服务中):
public User GetUser(int userId)
{
using (var db = new MyContext())
{
return db.Users.Include("Address").Single(u => u == userId);
}
}