在Webforms中使用ObjectContext,使用语句与每页一个实例

本文关键字:实例 一个 Webforms ObjectContext 语句 | 更新日期: 2023-09-27 18:12:39

我有一个关于在webforms中围绕ObjectContext对象使用using语句的问题。

如果我们有一个带有两个方法的表单设置,比如'Load()''Save()',并且都需要使用ObjectContext,那么创建上下文的实例变量并在两个方法中使用它是否更好,依赖于类的生命周期来隐式地处理对象,或者显式地创建对象上下文的两个实例,包装在using中,每个方法一次?

我问的原因是我不确定两件事。A)实例化对象上下文的开销是否高到足以保证将上下文开放给整个类使用,或者反过来B)在类的生命周期中存在的对象上下文是否太长,我们应该在工作单元完成后显式地关闭它?

对于这种环境有什么想法/建议/最佳实践吗?

在Webforms中使用ObjectContext,使用语句与每页一个实例

你可以管理每个请求的ObjectContext,不要把它看作是每个页面或WebForm,它必须绑定到当前的Request,查看这里了解更多细节:

如何管理ObjectContext每个请求在ASP。净

这或多或少也是通常为NHibernate的会话做的。

就我个人而言,我过去常常使用using语句进行编码,并立即在我需要的每个方法中创建/处置ObjectContext。在某些情况下,你必须特别注意这种方式,因为你的实体将从一个上下文中加载并保存在另一个上下文中,我必须将它们附加回来,如果我没记错的话。

如果您看一下技巧18,您会发现ObjectContext的构造时间可以忽略不计。

如果你需要在不同的方法中访问上下文,这些方法可以一起工作,你总是可以将上下文作为参数传递。如果这些方法不是相互依赖的,我每次都会选择一个新的Context。