This section describes mapping ABL ProDataSets to ADO.NET DataSets, using the DATASET and DATASET-HANDLE parameters.
ABL procedures can pass DATASET or DATASET-HANDLE parameters to an AppServer. This is a convenient and efficient way to pass relational data between the client and the AppServer code. The .NET Open Client environment provides the same capability using an ADO.NET DataSet. A .NET Open Client passes an ABL DATASET parameter using an ADO.NET strongly typed DataSet object that is generated by ProxyGen and mapped to the specified ProDataSet. This strongly typed DataSet object inherits from Progress.Open4GL.ProDataSet, which in turn inherits from the standard ADO.NET System.Data.DataSet class.
DATASET-HANDLE parameters allow the transfer of dynamic ProDataSets between Open Clients and the AppServer, without requiring a complete, static definition of the ProDataSet on each side of the transfer (as with DATASET parameters). A .NET Open Client passes an ABL DATASET-HANDLE parameter using an ADO.NET DataSet object, System.Data.DataSet.
For each unique static ProDataSet (DATASET parameter), ProxyGen generates a strongly typed DataSet class, TypedDataSet.cs. TypedDataSet is the name of the static ProDataSet in the ABL procedure, appended with DataSet. When comparing the static definitions of two ProDataSets, the name of the ProDataSet and the member buffers do not need to match for the ProDataSets to map to a single ADO.NET DataSet. However, field names, types, and indexes do need to match. (This differs from ABL in which field names and indexes do not need to match.) For example, in a procedure with a static ProDataSet CustOrderDS, TypedDataSet is CustOrderDSDataSet. Each temp-table in the ProDataSet is created as a DataTable within the DataSet class. If other ProDataSet parameters in other methods in the proxy share the same schema, ProxyGen does not create additional strongly typed DataSet classes but uses the same strongly typed DataSet class for these methods. The name of the ProDataSet parameter does not matter when comparing the schema of ProDataSet parameters.
Also, if ProxyGen detects two or more ProDataSet parameters with the same name but different schemas, ProxyGen creates multiple strongly typed DataSet classes, one for each unique schema. ProxyGen appends a unique number to the end of the DataSet name, to create unique class names. For example, if multiple procedures define a static ProDataSet CustOrderDS, each with a different schema, TypedDataSet can be CustOrderDSDataSet, CustOrderDS2DataSet, and so on.
All strongly typed DataSet classes are defined in the following namespace:
[namespace.]StrongTypesNS
Where namespace is the General namespace you optionally entered in the .NET Client Details group of the ProxyGen Generate Proxies dialog box. (See Namespacefor proxy objects.)