AIF 中的服务一般会提供八种操作, 分别为create,delete,find,findKeys,getKeys,read,update, getChangeKey
我们今天来讨论如何使用AIF Service 中的Read 方法去读取 Dynamics AX中的数据
- 注册 SalesSalesOrderService 服务
- 创建一个NetTcp类型的端口,命名为TestAIFOperation,添加SalesSalesOrderService 服务的read方法
- 在VS2010种创建一个console类型的项目
- 取得端口中的服务地址(WSDL URI): http://RD7145D0511:8101/DynamicsAx/Services/TestAIFOperation
- 添加引用,右击Reference/Add Service Reference,将WSDL URI复制进去,点击Go按钮,再点击确定
- 执行一下代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using TestAIFReadMethod.ServiceReference1;
namespace TestAIFReadMethod { class Program { static void Main(string[] args) { SalesOrderServiceClient client=new SalesOrderServiceClient(); CallContext context=new CallContext(); context.Company="CEU";
EntityKey[] readRespKeys = new EntityKey[2]; readRespKeys[0] = new EntityKey(); readRespKeys[0].KeyData = new KeyField[1]; readRespKeys[0].KeyData[0] = new KeyField(); readRespKeys[0].KeyData[0].Field = "SalesId"; readRespKeys[0].KeyData[0].Value = "SO-101265";
readRespKeys[1] = new EntityKey(); readRespKeys[1].KeyData = new KeyField[1]; readRespKeys[1].KeyData[0] = new KeyField(); readRespKeys[1].KeyData[0].Field = "SalesId"; readRespKeys[1].KeyData[0].Value = "SO-101244";
try { AxdSalesOrder salesOrder=client.read(context,readRespKeys); AxdEntity_SalesTable[] salesTable=salesOrder.SalesTable; foreach(AxdEntity_SalesTable saleTable in salesTable) { Console.WriteLine("Output salesTable name: {0}",saleTable.SalesName); Console.WriteLine("Output salesTable ID: {0}",saleTable.SalesId); Console.WriteLine("Output Customer account: {0}",saleTable.CustAccount); AxdEntity_SalesLine[] salesLine=saleTable.SalesLine; foreach(AxdEntity_SalesLine line in salesLine) { Console.WriteLine("Output ItemID: {0}",line.ItemId); Console.WriteLine("Output SalesQty: {0}",line.SalesQty); Console.WriteLine("Output SalesUnit: {0}",line.SalesUnit); Console.WriteLine("Output Next SaleLine:"); Console.WriteLine("*********************"); }
Console.WriteLine("Output Next SaleOrder:"); Console.WriteLine("----------------------------------------------------"); } } catch(Exception ex) { Console.WriteLine(ex.ToString()); } finally { client.Close(); }
Console.ReadKey(); } } } |
- 运行,结果如下:
Output salesTable name: Forest Wholesales Output salesTable ID: SO-101265 Output Customer account: 1101 Output ItemID: 10000 Output SalesQty: 10.00 Output SalesUnit: ea Output Next SaleLine: ********************* Output Next SaleOrder: ---------------------------------------------------- Output salesTable name: Football Stadium Output salesTable ID: SO-101244 Output Customer account: 2124 Output ItemID: 1003 Output SalesQty: 1.00 Output SalesUnit: ea Output Next SaleLine: ********************* Output ItemID: 1151 Output SalesQty: 15.00 Output SalesUnit: ea Output Next SaleLine: ********************* Output ItemID: 1161 Output SalesQty: 25.00 Output SalesUnit: ea Output Next SaleLine: ********************* Output Next SaleOrder: ---------------------------------------------------- |