我需要在会话/缓存中存储用户设置(如地址,访问权限等),以便通过basecontroller(MVC项目)访问它们。
当我尝试从会话中联系到User.Address
时,可以想象它会说:
ObjectContext实例已被释放,无法再使用 对于需要连接的操作。
地址是用户实体的导航属性。
我不想使用DTO。
有没有解决办法?
感谢。
答案 0 :(得分:1)
我同意格特,但我更喜欢这样写。 (用于编译时错误检查)
public User GetUser(int userId)
{
using (var db = new MyContext())
{
return db.Users.Include( p => p.Address).Single(u => u == userId);
}
}
答案 1 :(得分:0)
从数据库中提取用户时,您必须Include
该地址。例如,像这样(在存储库或服务中):
public User GetUser(int userId)
{
using (var db = new MyContext())
{
return db.Users.Include("Address").Single(u => u == userId);
}
}