如何在c#中分辨哪些产品是捆绑包的一部分

本文关键字:一部分 | 更新日期: 2023-09-27 18:15:28

我有一个基于自定义实体向客户收费的程序。这是一个基于订阅的过程。我们输入一个订单,如果该订单的产品被定义为订阅产品,则创建自定义实体。产品可以是单个产品,也可以是捆绑产品。当订阅结束时,我需要终止客户继续使用该软件的能力。

我可以读取产品,我可以通过检查属性"productstructure"来确定产品是否是一个bundle。如何确定哪些产品包含在捆绑包中?

谢谢

如何在c#中分辨哪些产品是捆绑包的一部分

如果您检索产品,您可以使用"productstructure"来确定它是否是一个bundle。如果值是3,它就是一个bundle。

然后你可以查询"productassociation"表,其中属性"productid"等于bundle的Id。

需要从"productassociation"表中检索的属性是"associatedproduct"。然后检索产品实例。

QueryExpression productBundleQuery = new QueryExpression();
productBundleQuery.Distinct = false;
productBundleQuery.EntityName = "productassociation";
productBundleQuery.ColumnSet = new ColumnSet("associatedproduct");
productBundleQuery.Criteria = new FilterExpression
{
     Conditions = { new ConditionExpression("productid", ConditionOperator.Equal, bundle.Id) }
};
EntityCollection productBundleCollection = _service.RetrieveMultiple(productBundleQuery);
foreach (Entity productAssociation in productBundleCollection.Entities)
{
    Entity product = _service.Retrieve("product", ((EntityReference)productAssociation["associatedproduct"]).Id, new ColumnSet("name", ...));
    Do something....
 }