2010-10-29 58 views
1

我有一个页面,如Order - Order lines。 Order由一些文本框和ddls表示,Order行由GridView表示。EF4 - 将对象添加到objectcontext而不保存更改

我想让用户添加订单行而不保存对数据库的更改。例如:他添加4个订单行,填写订单信息,然后点击保存按钮。只有那一刻所有的信息都应该保存到数据库中。

当我使用如下代码

using (Entities ctx = new Entities()) 
{ 
//create new OrderLine 
OrderLine ol = OrderLine.CreateOrderLine(1, 1, "", 1); 
//add OrderLine to OrderLines collection 
ctx.CreateOrderLines.AddObject(ol); 
} 

新创建的订单行不会出现在我的对象上下文,所以我不能访问它和GridView控件绑定到新的OrderList集合。

我该如何解决这个问题?或者,也许还有其他方法来执行此任务?

谢谢。

回答

0

您可以尝试分离Order对象并使用它,直到您准备好将其保存回数据库。

+0

分离没有问题。问题出在GridView中。当我需要添加,删除和更新行时,如何处理它,但没有即时保存。当点击保存按钮时,所有数据最后应保存到数据库中。 – Smile 2010-10-29 14:50:25

+0

我通过创建更小版本的对象(仅使用我需要的属性)并将它们存储在会话中来完成类似于此的操作。您不希望将整个GridView数据存储在会话中,但可能是一个轻量级对象。然后,当用户提交时,可以将值复制到ObjectContext并应用更改。 – dotariel 2010-10-29 15:54:37

+0

我不明白我应该如何在这种情况下与GridView一起工作。用户应该看到新添加的行也添加到了网格中。想象一下:用户从我的表单添加4行=>有4个回发=>向GridView添加了4个新行。但那时没有数据保存到数据库。比用户删除1行从这个4 => 1 postbask => 1行已经从GridView中删除(还有3行)。仍然没有数据保存。现在用户决定在GridView中更新1行=> 1 postback => 1行。最后用户点击保存按钮,所有更改/创建的数据保存到数据库。 – Smile 2010-10-29 16:13:51

相关问题