我的项目使用LINQ to SQL和EF来处理数据库中的对象。我在实体对象中有一个状态列,指定为int。我的BI层使用以下代码更新此数据,当我更改数据时,如果我查询SQL我在DB中看到更新的值,但是UI层没有显示新值,它显示旧值。在VS中停止项目并重新启动它,然后它将显示更新的数据。
EF会进行任何缓存吗?这可能是因为有3个单独的数据,UI和BI项目吗?
Public Shared Function UpdateStatus(PersonID As Guid, Status As LeadStatus, UserName As String) As Boolean
Dim db As New MyDb.DBContainer
Dim z = (From p In db.People Where p.Id = PersonID).FirstOrDefault()
If Not IsNothing(z) Then
z.Status = Status
db.SaveChanges()
LeadLogFunctions.AddLog(LeadLogTypes.StatusChanged, PersonID, UserName, "Status Changed By: " & UserName & " To: " & Enumeration.GetEnumDescription(Status))
Return True
End If
Return False
End Function
答案 0 :(得分:0)
在从数据库重新加载UI层之前,UI层不会显示新值。
如果您保持相同的DbContext
打开,则应重新加载现有实体,而不是使用DbContext.Entry(of T)().Reload()
函数进行新查询。