我的网站上有一个带有属性的基类:CurrentUser。 此属性的get方法将创建新上下文,并根据auth cookie信息从数据库中获取User对象。到目前为止一切都很好。
但是由于上下文已关闭,我在此之外可以做的就是直接在User下调用属性,例如FirstName。
但是,一旦我尝试获取关系,例如CurrentUser.UserOffices,这将无效,因为我没有在查询中包含UserOffices。
有没有办法在baseclass之外创建一个新的上下文,我可以将CurrentUser对象附加到?我没试过ctx.Attach(CurrentUser)。
您可能想知道为什么我不包含UserOffices。这只是因为与不同的表有很多关系,我不想将它们全部包含在内,因为它在我的网页之间有所不同,需要什么样的关系。
有什么想法吗?
答案 0 :(得分:1)
您可以尝试附加您的实体,然后显式加载属性:
ctx.Attach(CurrentUser);
ctx.LoadProperty(CurrentUser, u => u.UserOffices);
我不确定这是否适用于POCO。
您还可以使用Includes指定所需的导航属性来再次查询对象。
另一个选择就是加载UserOffices,使用Linq-to-entities查询限制当前用户的条件。