加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在多个ASP.NET请求中更新EF中的实体而不再检索它?

发布时间:2020-12-16 03:21:56 所属栏目:asp.Net 来源:网络整理
导读:听起来很简单吧?这是场景…… Private dbQuery As New ReefEntitiesProtected 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.CoralI
听起来很简单吧?这是场景……

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

我不想重新查询我的结果,我想从页面加载更新查询然后保存更改,对吧?如何访问该原始对象以进行更新?

解决方法

HTTP是一种无状态协议,因此,您对服务器发出的每个请求都需要重建对象图,除非您将其保留在某处.有很多方法可以在Web“会话”中保留数据.在ASP.NET中,您可以将数据存储在cookie,服务器端会话,视图状态,表单变量等中.

首先,当您在Page_Load中完成它时,将从对象上下文中分离出CurrentCoral

dbQuery.Detach(CurrentCoral)

然后将它放在视图状态的数据存储中.

Me.ViewState.Add("CurrentCoral",CurrentCoral)

在单击保存按钮的下一个Web请求中,从视图状态检索实体并将其附加到新对象上下文.

CurrentCoral = CType(Me.ViewState("CurrentCoral"),Coral)
dbQuery.Attach(CurrentCoral)
CurrentCoral.CommonName = strName
dbQuery.SaveChanges()

请原谅任何语法错误. VB.NET不是我的第一语言!有关使用Entity Framework附加和分离实体的更多详细信息,请参阅以下文章.

Attaching and Detaching Objects

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读