在实体框架中管理上下文生命周期

时间:2014-02-11 22:06:31

标签: entity-framework

我在N层应用程序中遇到了Context生存期问题。

我正在使用的包装器示例:

Public Class User
Private _user As DB.User
Private context As New DB.MyContainer

Public Sub New(ByVal UserID As Integer)
        _user = context.Users.FirstOrDefault(Function(x) x.Id = UserID)
End Sub

Public Sub Save()
    context.SaveChanges()
End Function

此方法导致我的UI图层出现问题。数据可以由UI层更新,这仍将返回“陈旧”数据,因为尚未处理上下文。如果在Finalize()中我设置了context.Dispose(),那么我无法访问该类的任何属性。

我每次都应该调用.reload(),还是应该缩短上下文?为了缩短它,我不必分离实体,然后在调用Save()时将其重新连接到新的上下文?

1 个答案:

答案 0 :(得分:1)

请看这篇文章: http://msdn.microsoft.com/en-us/magazine/ee335715.aspx

  

在每个的Using语句中创建一个新的ObjectContext实例   service方法,以便在方法返回之前将其处理掉。   此步骤对于服务的可伸缩性至关重要。它确保   数据库连接不会在服务调用之间保持打开状态   特定操作使用的临时状态是垃圾   在该操作结束时收集。实体框架   自动缓存所需的元数据和其他信息   app域,和ADO.NET池数据库连接,所以重新创建   上下文每次都是快速操作。

相关问题