-1

我有 wpf、c#、sql express 应用程序,这意味着带有数据库的软件。假设我有一个选项卡项,在选项卡项内部有数据网格。我从一个数据网格购买人员并将其放入篮子数据网格。假设在我的主数据网格中有 10 支铅笔,我买了 5 支。现在主数据网格中有 5 支,篮子数据网格中有 5 支。直到我按下购买按钮,它才会留在篮子里。现在我的问题是,假设断电并且我的应用程序已关闭。在我的主数据网格中,初始化后网格为 5,篮子为 0。所以我失去了我篮子里的东西。我可以在关闭应用程序或关闭选项卡项目时管理它。但无法管理它,当应用程序关闭不正确时。在c#中是否有任何机制、方法、事件来处理这个?我知道你们中的大多数人会说使用事务,我将在下一个版本中使用,但不会很快。现在我想找到如何在没有交易的情况下处理这个问题。我希望你明白我的意思。有任何想法吗?

这里的示例假设您在库存(主数据网格)中提供了 12 支钢笔和 15 支铅笔。您正在从库存中出售 2 支钢笔和 5 支铅笔。当您出售时,它将进入篮子数据网格。现在在主数据网格中有 10 支钢笔和 10 支铅笔。在篮子里有 2 支钢笔和 5 支铅笔。如果我不点击提交按钮,它将不会记录在销售数据库中。假设我正在工作和销售库存中的物品并且电力下降。我的存货中有 10 支钢笔和 10 支铅笔。篮子是空的。由于没有点击按钮,所以没有记录在销售数据库中

4

2 回答 2

0

最简单的方法是在添加项目时在数据库中设置脏标志以及篮子的详细信息。

然后在结帐过程完成时清除脏标志。

然后,当您重新启动应用程序时,请检查此标志。如果很清楚,那么您可以从头开始。如果已设置,则拉回篮子的详细信息并根据需要进行处理。

它不是很干净,但它会完成工作。

于 2013-03-01T17:24:31.967 回答
0

所以我仍然不确定这在你的代码中是如何工作的,但我会给你两种方式的答案:

  1. 如果您仅将库存数据(进入主网格的数据)存储在数据库中,那么当应用程序关闭时,您将丢失篮子中的所有内容,因为内存丢失了。如果是这种情况,您唯一的解决方案是将数据也存储在数据库的篮子中。

  2. 如果您将 bot 库存和购物篮数据存储在数据库中,那么您将拥有如下代码:


    update inventory
    update basket

如果您的问题是应用程序在这两行代码之间被强制关闭,那么唯一的解决方案是添加事务范围:

start transaction
update inventory
update basket
end transaction

这是确保数据安全的唯一途径。

如果您在案例 1 中,您应该实施解决方案,但这实际上会给您带来案例 2。所以我建议您不要等到下一个版本来实施事务范围。

我希望这有帮助。

于 2013-03-02T10:57:20.013 回答