0

我需要将用户设置(如地址、访问权限等)存储在会话/缓存中,以便通过基本控制器(MVC 项目)访问它们。

当我尝试User.Address从会话中到达时,可以想象它说:

ObjectContext 实例已被释放,不能再用于需要连接的操作。

地址是用户实体的导航属性。

我不想使用 DTO。

有什么解决方法吗?

谢谢。

4

2 回答 2

1

我同意格特的观点,但我更喜欢这样写。(用于编译时错误检查)

public User GetUser(int userId)
{
    using (var db = new MyContext())
    {
        return db.Users.Include( p => p.Address).Single(u => u == userId);
    }
}
于 2013-02-06T15:13:39.993 回答
0

当您从数据库中获取用户时,您必须Include提供地址。例如,像这样的东西(在存储库或服务中):

public User GetUser(int userId)
{
    using (var db = new MyContext())
    {
        return db.Users.Include("Address").Single(u => u == userId);
    }
}
于 2013-02-05T17:51:14.373 回答