对象上下文在特定记录组合上处理异常

时间:2012-02-09 13:44:37

标签: c# asp.net-mvc-3 entity-framework

我无法识别此问题的任何特定代码,但我将描述设置和问题,看看我是否能得到任何答案。

  • 用户对象,包含个人资料记录。档案记录包含模板记录。
  • 在用户登录时,我在会话中保留此用户对象。
  • 当我需要时,我会询问模板记录的访问权限。

这在大多数情况下都非常有效。我可以登录,工作正常。另一个用户(设置为不同的访问模板)登录并且第一次访问权限检查失败,因为它报告已放置对象上下文。我将访问模板更改为与我相同,一切正常。我将访问模板更改为打破其他用户的访问模板,并且工作正常。堆栈跟踪不识别任何其他内容。配置文件记录(也是相关记录)已完全填充,配置文件记录上还有其他关联可以正常工作。

概要;

我没有变化,工作正常。 其他用户无需更改,崩溃。 我与其他用户具有相同的设置,工作正常。 我的设置的其他用户工作正常。

我不知道该看什么,我无法识别任何特定的失败代码,因此我认为该方法不好。如果我在以破坏的用户身份登录时进行调试,它就不会再中断了。

是否有人可以提供任何建议,建议或信息?我不知道知道我使用的是MVC3是否有帮助,但为了以防万一,我在那里做了标记。

更新:感谢您的输入。我有一个解决方案,但我无法解释。

表A包含与表B的关联 表C包含与表B的关联(表B与C或A无关)

通过更改C中的记录,我可以解决问题,一致性是我可以更改记录以匹配损坏的用户并且我的用户会中断。如果我更改了记录,它将再次对我有效。我的登录过程提到表C,但没有设置任何数据或更改从表A加载配置文件的行为。

如果我防止B的延迟负荷; TableA.Include(TableB)无论表C中的内容如何,​​问题都会消失。

为什么延迟加载在某些情况下会起作用而在其他情况下却不起作用?表C中包含的记录在失败和成功案例中都是有效的,并且基于对C的任何查询都没有直接更改A.

我知道,对某人真正​​得到答案的唯一方法是查看我无法分享的代码,但如果有人有任何想法或之前已经看过这种行为,我将不胜感激。

0 个答案:

没有答案