我想通过使用Visual Studio并在C#中编写用于查询服务的代码来创建复杂的用户定义的AIF查询服务。我使用两个自定义表格,其中一个是标题,另一个是行表格。我在查询中添加了两个表格并应用适当的范围,并且工作正常。现在我想要在这两个表之间建立关系所以我可以基于关系来获取数据。Dynamics AX 2012通过C#的AIF QueryService - 多个表之间的关系和JoinMode用法
请帮我看看如何在AIF查询服务中的多个表之间建立关系。
query.DataSources = new QueryDataSourceMetadata[2];
query.Name = "AXCustomerInfo";
QueryDataSourceMetadata custTableDS = new QueryDataSourceMetadata();
custTableDS.Name = "CustTable";
custTableDS.Table = "CustTable";
custTableDS.Enabled = true;
query.DataSources[0] = custTableDS;
custTableDS.DynamicFieldList = false;
custTableDS.Fields = new QueryDataFieldMetadata[1];
QueryDataFieldMetadata accountNum;
accountNum = new QueryDataFieldMetadata();
accountNum.FieldName = "AccountNum";
accountNum.SelectionField = SelectionField.Database;
custTableDS.Fields[0] = accountNum;
custTableDS.HasRelations = true;
custTableDS.JoinMode =JoinMode.InnerJoin;
QueryDataSourceMetadata dirPartyTableDS = new QueryDataSourceMetadata();
dirPartyTableDS.Name = "DirPartyTable";
dirPartyTableDS.Table = "DirPartyTable";
dirPartyTableDS.Enabled = true;
query.DataSources[1] = dirPartyTableDS;
dirPartyTableDS.DynamicFieldList = false;
dirPartyTableDS.Fields = new QueryDataFieldMetadata[1];
QueryDataFieldMetadata name;
name = new QueryDataFieldMetadata();
name.FieldName = "Name";
name.SelectionField = SelectionField.Database;
dirPartyTableDS.Fields[0] = name;
dirPartyTableDS.HasRelations = false;
result = client.ExecuteQuery(query, ref paging);
foreach (DataRow row in result.Tables[0].Rows)
{
Console.WriteLine(String.Format("{0}", row[0]));
foreach (DataRow row1 in result.Tables[1].Rows)
{
Console.WriteLine(String.Format("{0}", row1[0]));
}
}
我不使用Axapta AOT来创建关系。我所要做的就是使用AIF查询服务在C#中创建用户定义的查询。我用C#编写了完整的代码,但我无法在两个表之间建立关系或连接。 –
显示您的代码。 –
更新的答案。 –