在EF 4中将对象附加到另一个上下文

时间:2011-02-01 13:23:03

标签: linq entity-framework-4

我的网站上有一个带有属性的基类:CurrentUser。 此属性的get方法将创建新上下文,并根据auth cookie信息从数据库中获取User对象。到目前为止一切都很好。

但是由于上下文已关闭,我在此之外可以做的就是直接在User下调用属性,例如FirstName。

但是,一旦我尝试获取关系,例如CurrentUser.UserOffices,这将无效,因为我没有在查询中包含UserOffices。

有没有办法在baseclass之外创建一个新的上下文,我可以将CurrentUser对象附加到?我没试过ctx.Attach(CurrentUser)。

您可能想知道为什么我不包含UserOffices。这只是因为与不同的表有很多关系,我不想将它们全部包含在内,因为它在我的网页之间有所不同,需要什么样的关系。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试附加您的实体,然后显式加载属性:

ctx.Attach(CurrentUser);
ctx.LoadProperty(CurrentUser, u => u.UserOffices);

我不确定这是否适用于POCO。

您还可以使用Includes指定所需的导航属性来再次查询对象。

另一个选择就是加载UserOffices,使用Linq-to-entities查询限制当前用户的条件。