Jar*_*tte 5 linq vb.net asp.net entity-framework
听起来很简单吧?这是场景......
Private dbQuery As New ReefEntities
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
CurrentCoral = (From c In dbQuery.Corals Where c.CoralID = intCoralID).FirstOrDefault
txtCommonName.Text = CurrentCoral.CommonName
End If
End Sub
Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
'how do I access the coral from the page load to update it?
CurrentCoral.CommonName = strName
dbQuery.SaveChanges()
End Sub
Run Code Online (Sandbox Code Playgroud)
我不想重新查询我的结果,我想从页面加载更新查询然后保存更改,对吧?如何访问该原始对象以进行更新?
HTTP 是一种无状态协议,因此,您向服务器发出的每个请求都需要重建对象图,除非您将其保存在某个地方。有很多方法可以在网络“会话”中保存数据。在 ASP.NET 中,您可以将数据存储在 cookie、服务器端会话、视图状态、表单变量等中。
首先,当您在 Page_Load 中完成使用 CurrentCoral 时,请将其从对象上下文中分离出来
dbQuery.Detach(CurrentCoral)
Run Code Online (Sandbox Code Playgroud)
然后将其放入像视图状态这样的数据存储中。
Me.ViewState.Add("CurrentCoral", CurrentCoral)
Run Code Online (Sandbox Code Playgroud)
在下一个 Web 请求中,当单击“保存”按钮时,从视图状态检索实体并将其附加到新的对象上下文。
CurrentCoral = CType(Me.ViewState("CurrentCoral"), Coral)
dbQuery.Attach(CurrentCoral)
CurrentCoral.CommonName = strName
dbQuery.SaveChanges()
Run Code Online (Sandbox Code Playgroud)
请原谅任何语法错误。VB.NET 不是我的母语!有关使用实体框架附加和分离实体的更多详细信息,请参阅以下文章。
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |