From 012661b0a8c7042b87a9bf7907f706e5bdce370c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cllt=E2=80=9D?= <“luc.lefever@fidesoft.com”> Date: Wed, 4 Mar 2026 01:16:46 +0100 Subject: [PATCH 1/4] Upgrade to .NET version 10.0.3 --- frameworks/CSharp/appmpower/appmpower-ado-my.dockerfile | 2 +- frameworks/CSharp/appmpower/appmpower-ado-pg.dockerfile | 2 +- frameworks/CSharp/appmpower/appmpower-odbc-my.dockerfile | 2 +- frameworks/CSharp/appmpower/appmpower-odbc-pg.dockerfile | 2 +- .../CSharp/appmpower/src/appMpower.Orm/appMpower.Orm.csproj | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frameworks/CSharp/appmpower/appmpower-ado-my.dockerfile b/frameworks/CSharp/appmpower/appmpower-ado-my.dockerfile index 8f2bd2eca6b..1edbf4d51f1 100644 --- a/frameworks/CSharp/appmpower/appmpower-ado-my.dockerfile +++ b/frameworks/CSharp/appmpower/appmpower-ado-my.dockerfile @@ -8,7 +8,7 @@ COPY src . RUN dotnet publish -c Release -o out /p:AOTEXE=true /p:Database=mysql /p:Driver=ado # Construct the actual image that will run -FROM mcr.microsoft.com/dotnet/aspnet:10.0.1 AS runtime +FROM mcr.microsoft.com/dotnet/aspnet:10.0.3 AS runtime RUN apt-get update RUN apt-get install -y unixodbc-dev unixodbc wget curl diff --git a/frameworks/CSharp/appmpower/appmpower-ado-pg.dockerfile b/frameworks/CSharp/appmpower/appmpower-ado-pg.dockerfile index 2bee94571ee..a8f2161b325 100644 --- a/frameworks/CSharp/appmpower/appmpower-ado-pg.dockerfile +++ b/frameworks/CSharp/appmpower/appmpower-ado-pg.dockerfile @@ -9,7 +9,7 @@ RUN dotnet publish -c Release -o out /p:AOTEXE=true /p:Database=postgresql /p:Dr # Construct the actual image that will run -FROM mcr.microsoft.com/dotnet/aspnet:10.0.1 AS runtime +FROM mcr.microsoft.com/dotnet/aspnet:10.0.3 AS runtime RUN apt-get update RUN apt-get install -y unixodbc-dev unixodbc wget curl diff --git a/frameworks/CSharp/appmpower/appmpower-odbc-my.dockerfile b/frameworks/CSharp/appmpower/appmpower-odbc-my.dockerfile index 584ca5e8409..abffb0b11f3 100644 --- a/frameworks/CSharp/appmpower/appmpower-odbc-my.dockerfile +++ b/frameworks/CSharp/appmpower/appmpower-odbc-my.dockerfile @@ -8,7 +8,7 @@ COPY src . RUN dotnet publish -c Release -o out /p:AOTEXE=true /p:Database=mysql /p:Driver=odbc # Construct the actual image that will run -FROM mcr.microsoft.com/dotnet/aspnet:10.0.1 AS runtime +FROM mcr.microsoft.com/dotnet/aspnet:10.0.3 AS runtime RUN apt-get update RUN apt-get install -y unixodbc-dev unixodbc wget curl diff --git a/frameworks/CSharp/appmpower/appmpower-odbc-pg.dockerfile b/frameworks/CSharp/appmpower/appmpower-odbc-pg.dockerfile index b18a1fd72e0..3ac00672459 100644 --- a/frameworks/CSharp/appmpower/appmpower-odbc-pg.dockerfile +++ b/frameworks/CSharp/appmpower/appmpower-odbc-pg.dockerfile @@ -7,7 +7,7 @@ COPY src . RUN dotnet publish -c Release -o out /p:AOTEXE=true /p:Database=postgresql /p:Driver=odbc # Construct the actual image that will run -FROM mcr.microsoft.com/dotnet/aspnet:10.0.1 AS runtime +FROM mcr.microsoft.com/dotnet/aspnet:10.0.3 AS runtime RUN apt-get update RUN apt-get install -y unixodbc-dev unixodbc odbc-postgresql diff --git a/frameworks/CSharp/appmpower/src/appMpower.Orm/appMpower.Orm.csproj b/frameworks/CSharp/appmpower/src/appMpower.Orm/appMpower.Orm.csproj index 242f5a12e9e..95b4eb56821 100644 --- a/frameworks/CSharp/appmpower/src/appMpower.Orm/appMpower.Orm.csproj +++ b/frameworks/CSharp/appmpower/src/appMpower.Orm/appMpower.Orm.csproj @@ -77,7 +77,7 @@ - Date: Wed, 4 Mar 2026 02:00:11 +0100 Subject: [PATCH 2/4] Special read of Japanese characters in MariaDB ODBC --- .../appmpower/src/appMpower.Orm/RawDb.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs b/frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs index 7b1cf9fd891..be09e619f9b 100644 --- a/frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs +++ b/frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs @@ -196,7 +196,13 @@ public static async Task> LoadFortunesRowsAsync() fortunes.Add(new Fortune ( id: dataReader.GetInt32(0), + //MariaDB ODBC connector does not correctly support Japanese characters in combination with default ADO.NET; + //as a solution we custom read this string +#if MYSQL + message: ReadColumn(dataReader, 1)) +#else message: dataReader.GetString(1)) +#endif ); } @@ -209,6 +215,26 @@ public static async Task> LoadFortunesRowsAsync() return fortunes; } +#if MYSQL + public static string ReadColumn(IDataReader dataReader, int column) + { + long size = dataReader.GetBytes(column, 0, null, 0, 0); //get the length of data + byte[] values = new byte[size]; + + int bufferSize = 64; + long bytesRead = 0; + int currentPosition = 0; + + while (bytesRead < size) + { + bytesRead += dataReader.GetBytes(column, currentPosition, values, currentPosition, bufferSize); + currentPosition += bufferSize; + } + + return System.Text.Encoding.Default.GetString(values); + } +#endif + private static (DbCommand dbCommand, IDbDataParameter dbDataParameter) CreateReadCommand(DbConnection pooledConnection) { #if ADO From ba8626e1d57e33f405c67860de89262c735bbc81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cllt=E2=80=9D?= <“luc.lefever@fidesoft.com”> Date: Wed, 4 Mar 2026 02:06:06 +0100 Subject: [PATCH 3/4] Try again with update README --- frameworks/CSharp/appmpower/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/CSharp/appmpower/README.md b/frameworks/CSharp/appmpower/README.md index 75ff21e1637..936e84a12d2 100644 --- a/frameworks/CSharp/appmpower/README.md +++ b/frameworks/CSharp/appmpower/README.md @@ -7,7 +7,7 @@ This includes tests for plaintext, json, db, queries, updates and fortune. **Language** -* C# 7.0 +* C# 14 **Platforms** From 20e190fc55b37d3768f23f1afaa8396e67fcf1ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cllt=E2=80=9D?= <“luc.lefever@fidesoft.com”> Date: Wed, 4 Mar 2026 02:15:39 +0100 Subject: [PATCH 4/4] Better MariaDB ODBC test --- frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs b/frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs index be09e619f9b..91105a8ed7c 100644 --- a/frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs +++ b/frameworks/CSharp/appmpower/src/appMpower.Orm/RawDb.cs @@ -198,7 +198,7 @@ public static async Task> LoadFortunesRowsAsync() id: dataReader.GetInt32(0), //MariaDB ODBC connector does not correctly support Japanese characters in combination with default ADO.NET; //as a solution we custom read this string -#if MYSQL +#if ODBC && MYSQL message: ReadColumn(dataReader, 1)) #else message: dataReader.GetString(1)) @@ -215,7 +215,7 @@ public static async Task> LoadFortunesRowsAsync() return fortunes; } -#if MYSQL +#if ODBC && MYSQL public static string ReadColumn(IDataReader dataReader, int column) { long size = dataReader.GetBytes(column, 0, null, 0, 0); //get the length of data