Dynamics crm 2011 Dynamics CRM 2011-从salesordersdetail上的retrievemultiple返回太多行

Dynamics crm 2011 Dynamics CRM 2011-从salesordersdetail上的retrievemultiple返回太多行,dynamics-crm-2011,crm,microsoft-dynamics,Dynamics Crm 2011,Crm,Microsoft Dynamics,我有一个插件,是注册更新,订单,后操作。在插件中,我对salesorderdetail执行retrievemultiple。我遇到的问题是,有3种产品组成了订单,但我从检索操作返回了5行。我在测试期间多次添加和删除同一产品,我不确定这是否是导致问题的原因。我在想,从订单中删除一个产品后,它可能会设置一个标志,然后被删除,但我不认为状态代码或状态代码是一个属性。为什么会返回太多行 这是我的密码 // Set the properties of the QueryExpression object.

我有一个插件,是注册更新,订单,后操作。在插件中,我对salesorderdetail执行retrievemultiple。我遇到的问题是,有3种产品组成了订单,但我从检索操作返回了5行。我在测试期间多次添加和删除同一产品,我不确定这是否是导致问题的原因。我在想,从订单中删除一个产品后,它可能会设置一个标志,然后被删除,但我不认为状态代码或状态代码是一个属性。为什么会返回太多行

这是我的密码

// Set the properties of the QueryExpression object.
orderDetailQuery.EntityName = "salesorderdetail";
orderDetailQuery.ColumnSet = orderDetailColumnSet;

EntityCollection salesOrderDetail = service.RetrieveMultiple(orderDetailQuery);

orderProductQuery.EntityName = "product";
orderProductQuery.ColumnSet = orderProductColumnSet;

foreach (var orderDetail in salesOrderDetail.Entities)
{
     if(orderDetail.Attributes.Contains("productid"))
     {
         productGuid = ((EntityReference)orderDetail["productid"]).Id;
         Entity product = service.Retrieve("product", productGuid, orderProductColumnSet);
      }
 }

谢谢你的帮助

您发布的代码不会显示您对特定
订单的筛选

我希望能够检索系统中该类型的所有实体

假设您使用的是
QueryByAttribute
,则要进行筛选,需要按照以下几行添加筛选器:

var query = new QueryByAttribute();
query.EntityName = "salesorderdetail";
query.AddAttributeValue("orderid", orderId);//orderId is the Id of the parent Order 
orderDetailQuery.EntityName = "salesorderdetail";
orderDetailQuery.ColumnSet = orderDetailColumnSet;
var results = service.RetrieveMultiple(query);

这样,您的查询仅限于给定订单的产品。

您发布的代码不会显示您对特定
订单的筛选

我希望能够检索系统中该类型的所有实体

假设您使用的是
QueryByAttribute
,则要进行筛选,需要按照以下几行添加筛选器:

var query = new QueryByAttribute();
query.EntityName = "salesorderdetail";
query.AddAttributeValue("orderid", orderId);//orderId is the Id of the parent Order 
orderDetailQuery.EntityName = "salesorderdetail";
orderDetailQuery.ColumnSet = orderDetailColumnSet;
var results = service.RetrieveMultiple(query);

这样,您就将查询限制为仅针对给定订单的产品。

我不确定是否实现了筛选。这里是一个关于如何查询SalesOrderDetail实体实例的现场快照,获取fieldName1和fieldName2字段的值,前提是它链接到具有guid orderId的订单

QueryExpression query=newqueryexpression
{
EntityName=“salesorderdetail”,
ColumnSet=新列集(“fieldName1”、“fieldName2”),
条件=新筛选器表达式
{
条件=
{
新条件表达式
{
AttributeName=“orderid”,
运算符=条件运算符。相等,
值={orderId}
}
}
}
};

我不确定您的筛选是否已实施。这里是一个关于如何查询SalesOrderDetail实体实例的现场快照,获取fieldName1和fieldName2字段的值,前提是它链接到具有guid orderId的订单

QueryExpression query=newqueryexpression
{
EntityName=“salesorderdetail”,
ColumnSet=新列集(“fieldName1”、“fieldName2”),
条件=新筛选器表达式
{
条件=
{
新条件表达式
{
AttributeName=“orderid”,
运算符=条件运算符。相等,
值={orderId}
}
}
}
};

嗯,我不确定我在想什么。谢谢嗯,我不确定我在想什么。谢谢