Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在RavenDB中使用折扣_Ravendb - Fatal编程技术网

如何在RavenDB中使用折扣

如何在RavenDB中使用折扣,ravendb,Ravendb,我想在RavenDB中实现产品折扣功能 产品文件: { "RegularPrice": 10.00, "ReferencePrice": 0.0, "Categories": [ "A", "B", "C" ] } 例如,现在我想为“a”类的所有产品提供折扣。 因此,我在折扣文档中映射折扣率的类别,如下所示: { "ProductDiscount": { "A": 20.0 } } 问题是,在以下情况下,我如何计算ReferencePr

我想在RavenDB中实现产品折扣功能

产品文件:

{
  "RegularPrice": 10.00,
  "ReferencePrice": 0.0,
  "Categories": [
    "A",
    "B",
    "C"
  ]
}
例如,现在我想为“a”类的所有产品提供折扣。 因此,我在折扣文档中映射折扣率的类别,如下所示:

{
  "ProductDiscount": {
    "A": 20.0
  }
}
问题是,在以下情况下,我如何计算ReferencePrice并存储或更新它:

  • 是否添加了新产品
  • 正常价格更新了吗
  • 折扣文档是否已更新

看来我应该用扳机来处理这件事。但我不确定

我不确定这个模型是否能用得住。您将如何将产品与折扣联系起来?它们是按类别关联的,但在这个模型中,是一种多对多的关系。这是你想要的吗?如果是这样,您将如何处理可能适用于同一产品的多个折扣

<>如果你要这样做,你可以考虑的一个策略是多地图/缩小计算价格,并把结果写回文档。但这是一个相当复杂的设置

您可以通过为每个类别提供一个折扣,并将折扣定义为类别文档的一部分来简化此操作。然后,您可以使用在索引时为类别获取折扣

您需要使用一个适合您的需求并且可以维护的模型进行实验

其他想法:

  • 是的,您可以使用,但这将作为插件运行服务器端。这可能很难维持

  • 您可以在应用类别折扣的任何时候手动发送折扣。新文档和对现有文档的编辑必须在您自己的代码中手动完成

  • 你可以完全不计算产品的价格。无论何时装载一个产品,你都会包括折扣,并即时计算价格


我肯定还有其他的。这真的取决于在你的特定应用程序中什么工作。

我不确定这种型号是否能使用。您将如何将产品与折扣联系起来?它们是按类别关联的,但在这个模型中,是一种多对多的关系。这是你想要的吗?如果是这样,您将如何处理可能适用于同一产品的多个折扣

<>如果你要这样做,你可以考虑的一个策略是多地图/缩小计算价格,并把结果写回文档。但这是一个相当复杂的设置

您可以通过为每个类别提供一个折扣,并将折扣定义为类别文档的一部分来简化此操作。然后,您可以使用在索引时为类别获取折扣

您需要使用一个适合您的需求并且可以维护的模型进行实验

其他想法:

  • 是的,您可以使用,但这将作为插件运行服务器端。这可能很难维持

  • 您可以在应用类别折扣的任何时候手动发送折扣。新文档和对现有文档的编辑必须在您自己的代码中手动完成

  • 你可以完全不计算产品的价格。无论何时装载一个产品,你都会包括折扣,并即时计算价格


我肯定还有其他的。这真的取决于你的特定应用程序中的工作原理。

thanx供你回复。事实上,一个产品涉及多个类别。如果有多次折扣,将设置最低计算价格。很好的建议和想法,但其中一些在我的环境中没有用处在索引时使用LoadDocument不会更新文档-触发器是一个选项,但维护将是一个问题(此外,我不知道如何使用触发器实现解决方案)-脚本补丁请求也是一个选项,但我更喜欢避免手动工作的机制。-在运行时计算价格是不可取的…因此仍有一个选项可用;索引属性包。我尝试了以下方法:计算(折扣)价格的指数:
Map=products=>from p in products from c in p.Categories选择new{ProductId=p.Id,ReferencePrice=p.RegularPrice*((100-LoadDocument)(“折扣/”+c.Amount)/100)};
…以及映射产品文档属性上索引字段的文档
documentstore.DatabaseCommands.Put(“Raven/IndexedProperties/”+折扣sindex.IndexName,null,RavenJObject.FromObject(新IndexedPropertiesSetupDoc{DocumentKey=“ProductId”,FieldNameMappings={{{{“ReferencePrice”,“ReferencePrice”}}}),新的RavenJObject()
thanx感谢您的回复。事实上,一个产品与多个类别相关。如果有多个折扣,将设置最低的计算价格。好的建议和想法,但其中一些在我的上下文中没有用处。-在索引时使用LoadDocument不会更新文档-触发器是一个选项,但维护e一个问题(此外,我不知道如何用触发器实现解决方案)-脚本补丁请求也是一个选项,但我更喜欢一种避免手动工作的机制。-不希望在运行时计算价格…因此在“索引属性”捆绑包上仍有一个选项。我尝试了以下方法:将计算(折扣)的索引价格:
Map=products=>来自p,来自c的产品