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