Release Bulletins for .NET DataStore
Last Updated: January 2024
This document provides release bulletins for all versions of .NET DataStore (including the DWNet packages DWNet.Data and DWNet.Data.AspNetCore).
Versioning of .NET DataStore and DWNet Packages
.NET DataStore is a SnapDevelop plugin. Each version of .NET DataStore must be installed on top of the same version of SnapDevelop, so the versioning of .NET DataStore follows the versioning of SnapDevelop (2019 R2, 2019 R3, 2021, etc.)
The DWNet packages (DWNet.Data and DWNet.Data.AspNetCore) are the Nuget package that shall be referenced for use with the C# models you ported from DataWindows with .NET DataStore. The packages are versioned by themselves and started from version 1.0.0.
Installation of .NET DataStore and DWNet Packages
- Run Appeon PowerBuilder Installer to install the desired version of .NET DataStore;
- The instructions on how to install, update, and uninstall the DWNet packages are the same as all the other NuGet packages. Please refer to the SnapDevelop documentation at https://docs.appeon.com/snapdevelop2022r3/SnapDevelop_Users_Guide/Chapter2Working_with_solutions_and_projects.html#managing-nuget-packages.
.NET DataStore 2022 R3 GA 3289
Version and Build Info
Released in Janauary 2024.
.NET DataStore: Version 2022 R3 GA 3289
DWNet.Data and DWNet.Data.AspNetCore: Version 4.2.0
What's New
- Internal updates only.
.NET DataStore 2022 GA 1878
Version and Build Info
Released in September 2022.
.NET DataStore: Version 2022 build 1878
DWNet.Data and DWNet.Data.AspNetCore: Version 4.0.0
What's New
- Internal updates only.
.NET DataStore 2021 MR 1506
Version and Build Info
Released in January 2022.
.NET DataStore: Version 2021 build 1506
DWNet.Data and DWNet.Data.AspNetCore: Version 3.1.2
What's New
- Internal updates only.
.NET DataStore 2021 MR 1311
Version and Build Info
Released in November 2021.
.NET DataStore: Version 2021 build 1311
DWNet.Data and DWNet.Data.AspNetCore: Version 3.1.1
What's New
- Internal updates only.
.NET DataStore 2021 GA Release
Version and Build Info
Released in July 2021.
.NET DataStore: Version 2021 build 1288
DWNet.Data and DWNet.Data.AspNetCore: Version 3.1.0
Database Server Requirements
The DataWindow Converter function provided in .NET DataStore can connect with the following database types and versions:
DB Type | DB Version |
---|---|
MySQL Amazon RDS for MySQL Amazon Aurora for MySQL Azure Database for MySQL |
5.6, 5.7, or 8.0 8.0.20 5.6.10a 5.6 |
PostgreSQL Amazon RDS for PostgreSQL Amazon Aurora for PostgreSQL Azure Database for PostgreSQL |
9.6, 10.1, 11.3, or 12 12.3-R 11.6 11 |
Oracle Amazon RDS for Oracle |
12c, 18c, or 19c 12.1.0.1 |
SQL Server Amazon RDS for SQL Server Azure SQL Database |
2016, 2017, or 2019 2017 14.00.3281.6.v1 Latest SQL Server engine (as at September, 2020) |
Informix | 12.x or 14 |
SQLite | 3 |
Adaptive Server Enterprise (ODBC) | 16.0 |
SQL Anywhere (ODBC) | 16 (16.0.0.2043 or later) or 17 |
HANA (ODBC) | 2.0 |
The DWNet packages can connect with the following databases using the specified data provider:
DB Type | Data Provider |
---|---|
MySQL 5.6, 5.7, or 8.0 Amazon RDS for MySQL 8.0.20 Amazon Aurora for MySQL 5.6.10a Azure Database for MySQL 5.6 |
SnapObjects.Data.MySql.dll |
PostgreSQL 9.6, 10.1, 11.3, or 12 Amazon RDS for PostgreSQL 12.3-R Amazon Aurora for PostgreSQL 11.6 Azure Database for PostgreSQL 11 |
SnapObjects.Data.PostgreSql.dll |
Oracle 12c, 18c, or 19c Amazon RDS for Oracle 12.1.0.1 |
SnapObjects.Data.Oracle.dll |
SQL Server 2016, 2017, or 2019 Amazon RDS for SQL Server 2017 14.00.3281.6.v1 Azure SQL Database (Latest SQL Server engine as at September, 2020) |
SnapObjects.Data.SqlServer.dll |
SQLite 3 | SnapObjects.Data.Sqlite.dll |
Informix 12.x or 14 | SnapObjects.Data.Informix.dll |
Adaptive Server Enterprise 16.0 | SnapObjects.Data.Odbc.dll |
SQL Anywhere 16 (16.0.0.2043 or later) or 17 | SnapObjects.Data.Odbc.dll |
HANA 2.0 | SnapObjects.Data.Odbc.dll |
What's New
Supports the Informix database (Windows 64-bit only).
Improves DataWindow Converter so that models can be converted with accurate column data types. All models must be converted again using DataWindow Converter after the DWNet packages are upgraded from 3.0 to 3.1.
DwMetaExtensions.GetSqlBuilder(this IDwMeta dwMeta)
is obsolete. Replace it with DwMetaExtensions.GetSqlBuilder(this IDwMeta dwMeta, DataContext context).Adds two methods to
IDataContextOptions
:SetDisableBind -- for supporting the PowerBuilder DisableBind parameter.
SetOutJoinSyntax -- for supporting the PowerBuilder OJSyntax parameter. Only PB and ANSI are supported currently.
Known Issues
.NET DataStore 2021 has the following known issues:
- When exporting .NET DataStore with an XML template, the NULL and empty strings are exported in the same format. And when the exported data is imported, the NULL and empty strings are all NULL.
- [ASE] Exception might be thrown when converting datatypes if a stored procedure contains decimal parameters.
- [ASE] When a column is of bigint data type and Allow Nulls is set to No, it is generated as the Long type in the generated models. In this case, the data type mapping exception will be thrown when Retrieve. You need to manually replace the Long type with the Decimal type in the exported models.
- [ASE] When a column is of Float(8) data type, it is generated as the Single type in the generated models. In this case, the data type mapping exception will be thrown when Retrieve. You need to manually replace the Single type with the Double type in the exported models.
- [SQL Anywhere] The SelectProcedureToStore method cannot get the return code or output parameter values for a stored procedure containing both return code and output parameters.
- [HANA] The datatypes "array", "st_geometry", and "st_point" are not supported.
- Static bind is not supported. Executing SQL statements containing such variables will result in a syntax error: Select Top :arg * from Table1, select Fname,salary from t_dwstyle_alltype where bankmony = cast(:ls_parm as decimal(:ll_precision,16))
- PowerBuilder functions are not fully supported. For example, LeftA and RightA currently cannot return the same results at runtime as they do in PowerBuilder.
- Cannot distinguish between null and "" when exporting data from the DataStore using template.
- CreateFromSQL does not support stored procedures.
- Committing a transaction will close the session and the temp table disappears.
- [Informix] If the DataWindow contains a boolean field, the field will be converted to int16, and the TypeName property will not be added when the DataWindow is converted to the model.
- [MySQL] If the DataWindow contains SQL expressions which use the Min or Max function, data type will not match when performing data retrieval.
- [Informix] Data of the INTERVAL DateTime values will be truncated.
- [Informix] The database connection option IsolationLevel has no effect.
- [Informix] SnapObjects.Data.Informix.dll references a library that has dependency on the 64-bit OS. If the project is built without changing the targeted processor architecture (from x86/Any CPU to x64), there will be mismatch warnings during the build process.
DataWindow Converter 2021 has the following known issues:
[HANA] Cannot identify the system functions.
[HANA] NCLOB data type is not supported.
[SQL Server] Retrieving large decimal data might lead to a data overflow.
Bug Fixes
.NET DataStore 2021 has no bug fixes.
.NET DataStore 2019 R3 MR
Version and Build Info
Released in April 2021.
.NET DataStore: Version 2019 R3 build 2703
DWNet.Data and DWNet.Data.AspNetCore: Version 3.0.0
What's New
- Internal updates only.
.NET DataStore 2019 R3 GA
Version and Build Info
Released in January 2021.
.NET DataStore: Version 2019 R3 build 2670
DWNet.Data and DWNet.Data.AspNetCore: Version 3.0.0
What's New
New async methods for .NET DataStore
The following asynchronous methods are added to the IDataStoreBase
interface:
- Task<int> UpdateAsync(bool resetFlag = true);
- Task<int> UpdateAsync(CancellationToken cancellationToken);
- Task<int> UpdateAsync(bool resetFlag, CancellationToken cancellationToken);
- Task<int> UpdateAsync(UpdateSqlStrategy updateSqlStrategy, bool resetFlag = true);
- Task<int> UpdateAsync(UpdateSqlStrategy updateSqlStrategy, CancellationToken cancellationToken);
- Task<int> UpdateAsync(UpdateSqlStrategy updateSqlStrategy, bool resetFlag, CancellationToken cancellationToken);
- Task<int> ReselectRowAsync(int row);
- Task<int> ReselectRowAsync(int row, CancellationToken cancellationToken);
- Task<int> RetrieveAsync(params object[] arguments);
- Task<int> RetrieveAsync(object[] arguments, CancellationToken cancellationToken);
- Task<int> RetrieveByKeyAsync(params object[] parameters);
- Task<int> RetrieveByKeyAsync(object[] parameters, CancellationToken cancellationToken);
- Task<int> RetrieveByPageAsync(int currentIndex, int pageSize, params object[] arguments)
- Task<int> RetrieveByPageAsync(int currentIndex, int pageSize, object[] arguments, CancellationToken cancellationToken);
New class for importing templates
The following class is added to support importing templates (in XML/JSON format, and of Grid/Group datatype).
DwTemplateImporter
Support for TableBlob/InkPicture
The following attributes and datatype are added to support data retrieval and update with TableBlob/InkPicture:
DwTableBlobAttribute
attribute for specifying theBLOB
column.DwInkPictureAttribute
attribute for specifying theInkPic
column.InkPicture
datatype for mapping with PowerBuilderInkPicture
data.Data
property, corresponding toData
property in the PowerBuilderInkPicture
column.BackImage
property, corresponding toBackImage
property in the PowerBuilderInkPicture
column.
.NET DataStore 2019 R2 MR
Version and Build Info
Released in July 2020.
.NET DataStore: Version 2019 R2 build 2353
DWNet.Data and DWNet.Data.AspNetCore: Version 2.1.0
What's New
- The IDwMeta interface has a new method: CreateFromSql.
- The Update method of the IDataStoreBase interface has been improved to update data via the dynamically created model (ModelType as DynamicModel).
- The IDataStore interface has a new method: GetReport.
Bug Fixes
- (Internal bug) When DataStore data is exported using JSON template, data export fails if DataStore contains nested reports.
Known Issues
- It is unsupported to retrieve to a model converted from a Crosstab DataWindow.
- Some DataWindow expression features cannot work well yet: Like, Trim, CumulativePercent.
- The String[] type parameter is unsupported in models and shall be replaced with list.
- When a generic DataStore executes the Sort or SortBy function, it does not keep the sorting criteria.
.NET DataStore 2019 R2 GA
Version and Build Info
Released in April 2020.
.NET DataStore: Version 2019 R2 build 2323
DWNet.Data and DWNet.Data.AspNetCore: Version 2.0.0
What's New
- The previous PowerBuilder.Data NuGet library is renamed to DWNet.Data.
- The previous PowerBuilder.Data.AspNetCore is renamed to DWNet.Data.AspNetCore.
- .NET DataStore has removed the dependency on the original DataWindow SRD file.
- Generic .NET DataStores (DataStore<TModel>) is supported.
- ModelStore object is obsolete. Use generic .NET DataStore to replace ModelStore.
- Use the DwModelManager.LoadDwModels() method (instead of DataObjectFactory.LoadDataWindow) to load DataWindow.
- DataObject has been moved from DwNet.Data to PowerScript.Bridge.
- The following new attributes for model class are added:
- DataWindowAttribute (string dataObjectName, DwStyle processing)
- DwDataAttribute (Type dataProviderType)
- DwFilterAttribute (string expression)
- DwGroupByAttribute (short level, params string[] groupBy, [string sortBy])
- DwKeyModificationStrategyAttribute (UpdateSqlStrategy sqlStrategy)
- DwParameterAttribute (string name, Type dataType)
- DwSelectAttribute (string select, [bool IsProcedure])
- DwSortAttribute (string expression)
- DwTemplateAttribute (DataFormat format, string name, string path, [bool IsDefault])
- DwUpdateAttribute (DwUpdateAction action, string name)
- DwUpdateParameterAttribute (DwUpdateAction action, DwArgumentSource source, string name, string expression, [bool UseOriginal], [ParameterDirection Direction])
- The following new attributes for model property are added:
- DwChildAttribute (string dataColumn, string displayColumn, Type modelType, [bool AutoRetrieve])
- DwColumnAttribute (string column, [string Validation], [string ValidationMsg])
- DwComputeAttribute (string expression)
- DwReportAttribute (Type modelType)
- New export/import methods for DataStores
- Export and import using DataStore APIs (DataStoreDataExtensions).
- Export and import using Exporter and Importer (GetDataExporter & GetDataImporter).
- Export using template (DwTemplateExporter)
- DataTable supports exporting/importing standard-format data (such as JSON) (GetDataExporter & GetDataImporter)
- Other new DataStore APIs
- int RetrieveByKey(params object[] parameters)
- TModel GetForUpdate(int index)
- TModel GetForUpdate(Predicate predicate)
- IEnumerable GetForUpdateList(Predicate predicate)
- int RemoveAll(Predicate predicate)
- TModel GetModel(int row, bool calcCompute)
- TModel GetModelByRowId(int rowid, bool calcCompute)
- DwMeta property
- DataContext property
- IEnumerable GetItems(short column, DwBuffer bufferType = DwBuffer.Primary)
- IOrderable SortBy(Func<TModel, object> keySelector)
- IOrderable SortByDescending(Func<TModel, object> keySelector)
Bug Fixes
- (Bug 3623) The RetrieveByKey function fails to work if the C# model is generated from a DataObject with the DwSelect in syntax mode (for example, [DwSelect (“SELECT art FROM s1000art”).
- (Bug 3624) The SQL built by the RetrieveByKey function shall qualify the column names with the table names.
- (Bug 3626) The SQL produced from RetrieveByKey for SQL Server does not use binding.
- (Bug 3627) When data type mapping fails, the error message contains a misspelled word “compatiable”.
- (Bug 3857) Error occurred when executing the RetrieveByKey within a transaction.
- (Bug 4130) Error occurred when executing or evaluating a computed expression containing IN statement.
- (From Community) No matter whether the condition in a conditional expression is true or false, both the truevalue and falsevalue are executed.
Known Issues
- With Oracle connections, it is not supported to have an array-type parameter in stored procedures.
- With ODBC (SQL Anywhere) connections, SQL batch processing is unsupported.
.NET DataStore 1.0.x
What's New
.NET DataStore
.NET DataStore is a .NET implementation of the PowerScript DataStore, which is compatible with the .NET Core and is developed with the PowerBuilder IDE. It brings the heart of PowerBuilder to C# development and with fast performance.
Transactions in .NET DataStore can be either explicit or implicit:
- An explicit transaction is one that you explicitly create by using context.BeginTransaction()
- An implicit transaction inherently includes all the CUD operations on the model until a commit method (SaveChanges in SqlModelMapper, or Execute/ExecuteProcedure in SqlExecutor) is executed.