ASP.NET计算对象的属性,应该在db还是计算运行时?

时间:2010-07-04 19:06:10

标签: asp.net architecture

我有一个类似网络商店的小型网络应用程序,我有很大的计划:-) 我有一个篮子对象和一个篮子对象,篮子里有一个篮子列表。在运行时我没有列表,它必须从数据库(使用存储库模式)加载与篮子的ID。篮子可以存在几天(最多30天),并且客户可以在此间隔期间将篮子项目添加到篮子中。

计算篮子的总数(我有几个类似的计算)的最佳方法是什么?我应该在数据库中保留一个字段并在我向篮子添加内容时更新它,或者我应该在作为财产飞行(用于数据绑定目的)?

让我们说我必须对这个篮子进行两次计算,一次是总计,一次是折扣(棘手的算法,取决于许多变量)。

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

4 个答案:

答案 0 :(得分:1)

我会动态计算总数 - 如果任何单个物品的价格在客户购物篮中发生变化,那么我会想象如果价格已经消失,您会想要以新价格出售它们如果他们已经失败了,或者想要将任何积蓄转嫁给客户:)

如果您将其存储在数据库中,那么它就是冗余数据 - 您拥有计算它所需的所有数据,而这些数据已经存储在各个项目中。这也意味着每次用户登录时都需要更新该数据库表/字段以更新总数。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这种计算,特别是如果它们经常变化,最好是动态计算。

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

答案 3 :(得分:0)

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