我正在使用Webforms在ASP.Net中处理一个项目。我正在使用Entity Framework在Microsoft SQL上保存数据。
是否可以使用Static类来保持EF Live的ObjectContext并将/ get实体保存在ObjectContext中?
我想创建一个Object,然后在ObjectContext上添加AddObject,但不要执行Savechanges。所有这些都在一个webform中。然后,在其他webform中,访问ObjectContext并在添加时获取Object。
这可能吗?
答案 0 :(得分:2)
我使用ObjectContext:
您试图违反这两条规则。如果您这样做,您的应用程序将具有不确定的行为。为每个请求创建新的ObjectContext
实例。它与在请求中打开新连接和启动新事务相同,而不是在所有连接中共享一个连接和一个事务。
进一步解释here。同时检查右栏中的链接问题,您将看到人们因违反一个或两个提到的规则而出现的问题类型。
同样在Web应用程序中,它更有趣,因为ObjectContext
不是线程安全的。
答案 1 :(得分:0)
您可以将其添加到应用程序项集合中。有关语法等内容,请参阅此博客文章。
http://www.informit.com/articles/article.aspx?p=27315&seqNum=3
答案 2 :(得分:0)
一般来说,你不想这样做。 ObjectContext旨在成为一组工作单元,对于一组相关事务是活动的。在ASP.NET应用程序中,通常对应于单个请求。
如果必须为多个请求保持活动状态,我不会使用静态类,也不会使用应用程序上下文。相反,我建议使用缓存,然后将回调附加到它,以便在被驱逐之前确保所有事务都已提交,以防万一。