2013-02-05 46 views
0

我需要在会话/缓存中存储用户设置(如地址,访问权等),以便通过基本控制器(MVC项目)访问它们。如何从实体中删除代理

当我尝试从会话达到User.Address如可以想像它说:

的ObjectContext的实例已设置,并且可以不再为需要连接的操作中使用 。

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

我不想用DTO。

有没有解决方法?

谢谢。

+0

地址是一种lazzy载入属性?如果会话上下文将丢失dbContext,则应该加载它们全部。 –

+0

是的,地址是一个延迟加载属性。 – shortcode

+0

标题和问题之间的关系是什么? :) –

回答

1

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

public User GetUser(int userId) 
{ 
    using (var db = new MyContext()) 
    { 
     return db.Users.Include(p => p.Address).Single(u => u == userId); 
    } 
} 
0

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

public User GetUser(int userId) 
{ 
    using (var db = new MyContext()) 
    { 
     return db.Users.Include("Address").Single(u => u == userId); 
    } 
}