2010-07-04 81 views
0

我有一个小型网上商店般的网络应用程序,我有很大的计划:-) 我有一个篮子对象和basketitem对象,篮子里有basketitems列表。在运行时我没有列表,它必须从数据库(使用存储库模式)加载篮子的id。篮子可以存在几天(最多30天),客户可以在这段时间内将basketItems添加到篮子中。对象上的ASP.NET计算属性应该在db还是计算运行时?

什么是最好的方法来计算总数(我有几个类似的计算)篮子,我应该维护数据库中的字段,并更新它,当我添加一些东西到篮子或我应该计算它作为财产的苍蝇(用于数据绑定的目的)?假设我必须对这个篮子进行两次计算,一次是总计,另一次是折扣(依赖于许多变量的棘手算法)。

3,4或5次计算怎么样,这是最好的方法?

回答

1

我会在飞行中计算总价 - 如果任何单个项目的价格在他们在顾客购物篮中时发生变化,那么我会想象如果价格有新的价格上涨或想要将任何积蓄传递给客户,如果他们已经下降:)

如果您将它存储在数据库中,它是冗余数据 - 你有所有的数据,你需要计算它已针对单个项目进行存储。这也意味着每次用户登录时都需要更新数据库表/字段以更新总数。

0

由于购买尚未完成,因此不应将其存储在数据库中。在添加物品的时间内,篮子内的任何产品可能已经更改价格,并计算总金额。

同样的折扣,有些是时间有限,需要重新评估。

0

这样的计算,特别是如果它们经常发生变化,最好在飞行中进行计算。

否则,您将最终不得不一次又一次地更新所有现有篮子的这些数据库字段。

0

我会使用一种组合方法,计算购物篮中物品的价格,然后在物品已付款时存储所有计算的值。通过这种方式,当客户访问她以前的订单时,我可以在允许价格变化和产品折扣的同时跳过计算。