ASP.Net中的ObjectContext

时间:2011-03-03 17:38:10

标签: asp.net entity-framework webforms

我正在使用Webforms在ASP.Net中处理一个项目。我正在使用Entity Framework在Microsoft SQL上保存数据。

我的问题是:

是否可以使用Static类来保持EF Live的ObjectContext并将/ get实体保存在ObjectContext中?

我想创建一个Object,然后在ObjectContext上添加AddObject,但不要执行Savechanges。所有这些都在一个webform中。然后,在其他webform中,访问ObjectContext并在添加时获取Object。

这可能吗?

3 个答案:

答案 0 :(得分:2)

我使用ObjectContext:

的规则
  1. 不要使用静态上下文。
  2. 不要分享背景。
  3. 您试图违反这两条规则。如果您这样做,您的应用程序将具有不确定的行为。为每个请求创建新的ObjectContext实例。它与在请求中打开新连接和启动新事务相同,而不是在所有连接中共享一个连接和一个事务。

    进一步解释here。同时检查右栏中的链接问题,您将看到人们因违反一个或两个提到的规则而出现的问题类型。

    同样在Web应用程序中,它更有趣,因为ObjectContext不是线程安全的。

答案 1 :(得分:0)

您可以将其添加到应用程序项集合中。有关语法等内容,请参阅此博客文章。

http://www.informit.com/articles/article.aspx?p=27315&seqNum=3

答案 2 :(得分:0)

一般来说,你不想这样做。 ObjectContext旨在成为一组工作单元,对于一组相关事务是活动的。在ASP.NET应用程序中,通常对应于单个请求。

如果必须为多个请求保持活动状态,我不会使用静态类,也不会使用应用程序上下文。相反,我建议使用缓存,然后将回调附加到它,以便在被驱逐之前确保所有事务都已提交,以防万一。