asp.net - 跨多个回发存储对象的方法

标签 asp.net entity-framework postback

为了便于论证,假设我有一个允许用户编辑订单详细信息的网络表单。用户可以执行以下功能:

  • 更改送货/付款详细信息(所有简单文本/下拉菜单)
  • 添加/删除/编辑订单中的产品 - 这是通过网格完成的
  • 添加/删除附件

产品和附件存储在单独的数据库表中,并带有订单的外键。

Entity Framework (4.0)用作 ORM。

我想允许用户对订单进行任何他们想要的更改,并且只有当他们点击“保存”时,我才想将更改提交到数据库。这对于文本框/复选框等来说不是问题,因为我可以依靠 ViewState 来获取所需的信息。然而,网格给我带来了一个更大的问题,因为我无法找到一种很好且简单的方法来保存用户所做的更改而不将更改提交到数据库。在 Session/ViewState 中存储 Order 对象树并不是我真正想要的选项,因为对象可能会变得非常大。

所以问题是 - 我怎样才能保留用户所做的更改,直到准备好“保存”。

快速说明 - 我已经搜索过尝试找到解决方案,但是我发现的只是使用 Session 和/或 ViewState 的建议 - 由于对象树的潜在大小,我宁愿不使用这两者

最佳答案

如果您可以控制数据库的架构以及使用订单数据的其他应用程序,则可以向订单表添加标志或状态列,以区分临时订单和最终订单。然后,您可以简单地将中间更改存储到数据库中。还有其他好处;例如,浏览器崩溃的用户可以返回应用程序并能够恢复订单流程。

我认为坚持使用数据库来存储数据是持久数据(即使是临时数据)的唯一可靠方法。使用 session 状态、控制状态、cookie、临时文件等可能会导致很多可能出错的事情,尤其是当您的应用程序驻留在网络场中时。

关于asp.net - 跨多个回发存储对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023929/

相关文章:

c# - 获取gridview复选框

c# - 我可以使以下 IQueryable linq 语句通用吗

mysql - 关系数据库中的数据粒度

javascript - 如何在asp.net中使用javascript将按钮html回发到服务器

javascript - ASP.NET 仅在满足条件时才执行 JavaScript 在 C# 代码后面确认警报消息

asp.net - 如何使用 vb.net 在文本框中检索当前登录的用户角色名称?

c# - 您可以将 UserId 存储在 Owin OAUTH 2 token 中吗?

asp.net-mvc - 使用存储库模式支持多个提供者

javascript - jQuery 自动完成在 ASP.NET 回发期间不保留值

c# - 是否可以在回发时伪造查询字符串?