【问题标题】:ASP.NET calculated properties on object, should be in db or calculated runtime?对象上的 ASP.NET 计算属性,应该在数据库中还是计算运行时?
【发布时间】:2010-07-05 03:21:32
【问题描述】:

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

计算篮子总数的最佳方法是什么(我有几个类似的计算要进行),我应该在数据库中维护一个字段并在我向篮子添加东西时更新它还是应该在fly 作为属性(用于数据绑定)?

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

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

【问题讨论】:

    标签: asp.net architecture


    【解决方案1】:

    我会即时计算总数 - 如果任何单个商品在客户购物篮中的价格发生变化,那么我想如果价格已经上涨,您会想以新价格出售它们向上或希望将任何储蓄转嫁给客户,如果他们下降了:)

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

    【讨论】:

      【解决方案2】:

      由于购买尚未完成,因此不应将其存储在数据库中。购物篮中的任何产品都可能在添加商品期间价格发生变化,您可以计算总金额。

      折扣也是如此,有些是有时间限制的,需要重新评估。

      【讨论】:

        【解决方案3】:

        这样的计算,尤其是如果它们经常变化,最好是即时计算。

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2022-08-16
            • 2012-03-22
            • 2017-06-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-05
            • 2015-09-20
            相关资源
            最近更新 更多