EF:包装器对象中的DBContext?

时间:2014-02-07 18:52:07

标签: vb.net entity-framework

我遇到了创建用于连接UI层和数据层的包装器的问题。在每个包装器对象中使用EF 5,我使用以下内容进行初始化:

Public Class Person
    Dim db As New db.Contex
    Dim _person As db.Person

 Public Sub New(ByVal PID As Guid)
    _person = (from p in db.people where p.ID = PID)  
End Sub

 Public Sub Save()
    db.SaveChanges() 
End Sub

以上代码导致缓存问题,因为数据存储区将使用正确的值进行更新,但在再次调用Person时,将返回旧数据。我习惯这个问题的解决方案是:

 Public Sub New(ByVal PID As Guid)
        db.Entry(db.Leads.Find(PID)).Reload()
        _person = db.People.Find(PID)
    End If
End Sub

虽然这确实通过强制重新加载对象来解决问题,但似乎这是一种解决方法而不是真正的修复。有人可以指出我做错了导致EF返回错误数据吗?

示例问题如下:

Dim tmpPerson as New Person(SomeValue)
tmpPerson.SomeParam = NewValue
tmpPerson.Save()

Dim tmpPerson_1 as New Person(SomeValue)
tmpPerson.SomeParam -> will display old value, not new value

0 个答案:

没有答案