延迟提交实体框架实体

时间:2009-06-04 21:10:51

标签: asp.net-mvc entity-framework

我正在使用实体框架创建一个Asp.net MVC网站,我想知道如何在多个请求中保留新的和更新的实体,而无需提交到数据库。
比如说,例如用户进入视图以编辑实体,并且在该视图上,他们可以将子项添加到实体。在用户点击页面上的“保存”按钮之前,我不想将更改提交到数据库 我已经意识到我不会坚持ObjectContext,我理解。基本上我想要一个实体,保持它在Session状态,或者在某个地方等效,在那里进行更改,然后在用户完成页面时将这些更改提交到数据库。
有关如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

ViewData集合是一个临时的“暂存器”,用于跨请求保持对象。它的工作方式与Session对象相同,但生命周期较短。

在默认的MVC项目中,您可以在Home控制器中看到此示例,它使用ViewData [“Message”]在Index视图上显示消息。

答案 1 :(得分:0)

我遇到了这个问题,寻找类似的问题。为了防止其他人处于相同的情况,Josh E接受的答案是错误的 - ViewData不会持久存储多个请求,它只是用于将数据传递给View,这发生在同一个请求中。 TempData IS在请求之间保持不变,但存储在其中的值在读取一次后将被清除。

我对实体框架不太熟悉,不知道它是否受支持,但您可以在Session中存储任何(可序列化的?)对象。但是,这些对象的生命周期取决于会话生存期,除非您手动删除它们。此外,这可能占用大量内存。我认为最理想的方法是使用可以为您管理的持久性框架。我不知道实体框架是否可以做到这一点。对于我们这些坚持使用ADO的人来说,我还没有找到一个好的解决方案。

相关问题