Aumerial.Data.Nti
5.0.0
dotnet add package Aumerial.Data.Nti --version 5.0.0
NuGet\Install-Package Aumerial.Data.Nti -Version 5.0.0
<PackageReference Include="Aumerial.Data.Nti" Version="5.0.0" />
<PackageVersion Include="Aumerial.Data.Nti" Version="5.0.0" />
<PackageReference Include="Aumerial.Data.Nti" />
paket add Aumerial.Data.Nti --version 5.0.0
#r "nuget: Aumerial.Data.Nti, 5.0.0"
#:package Aumerial.Data.Nti@5.0.0
#addin nuget:?package=Aumerial.Data.Nti&version=5.0.0
#tool nuget:?package=Aumerial.Data.Nti&version=5.0.0
NTi Data Provider
NTi Data Provider is a lightweight, fully managed, multiplatform access provider for IBM i servers. It lets any .NET application query the DB2 for i database, call programs and execute CL commands over the native host servers, with no ODBC driver, no IBM i Access installation and no unmanaged dependency.
Version 5 is a complete rewrite of the NTi 4 provider: same API, same connection strings, a new engine underneath. Applications running on NTi 4 upgrade without code changes.
Info
Contact us
Documentation
2026 - AUMERIAL SAS
Why version 5
The whole transport and protocol layer has been redeveloped and optimized end to
end: large reads saturate a gigabit link from a single connection, unitary
latency is the lowest of the drivers we benchmark against (ODBC, JT400), the
read path decodes values with near zero allocations, and the engine is truly
asynchronous from OpenAsync to DisposeAsync.
NTi has no external dependency. Character conversion (179 CCSIDs: EBCDIC single
byte, double byte and mixed SO/SI, Unicode, ASCII/OEM) is powered by NTi's own
conversion tables, extracted from an IBM i server and cross checked against
JTOpen and ICU, with no reliance on System.Text.Encoding.CodePages.
Getting started
using Aumerial.Data.Nti;
using var connection = new NTiConnection("server=MYIBMI;user=MYUSER;password=MYPASSWORD");
connection.Open();
// SQL
using var command = connection.CreateCommand();
command.CommandText = "SELECT ORDNO, CUSNAME, AMOUNT FROM MYLIB.ORDERS WHERE AMOUNT > ?";
var amount = command.CreateParameter();
amount.Value = 1000m;
command.Parameters.Add(amount);
using var reader = command.ExecuteReader();
while (reader.Read())
Console.WriteLine($"{reader.GetString(0)} {reader.GetString(1)} {reader.GetDecimal(2)}");
// CL command
connection.ExecuteClCommand("SNDMSG MSG('Hello from .NET') TOUSR(QSYSOPR)");
// Program call
var parameters = new List<NTiProgramParameter>
{
new("CUSTOMER01", 10), // CHAR(10)
new(0, ParameterDirection.Output), // BINARY(4)
};
connection.CallProgram("MYLIB", "MYPGM", parameters);
Entity Framework Core support is available through the companion Aumerial.EntityFrameworkCore
packages.
Supported platforms
- .NET Framework 4.7.2+
- .NET Standard 2.1
- .NET 5, .NET 8, .NET 10
- IBM i V5R4 and later (V7R4+ recommended;
GetSchemacatalog collections require a recent OS)
AI agent skill
The package ships a skill file for AI coding agents (agents/SKILL.md in the
package): connection string reference, ADO.NET and EF Core patterns, program and
service program calls, and IBM i specific pitfalls. Install it into your
repository with:
dotnet msbuild -t:NTiInstallAgentSkills
Run it from the folder of a project that references the package, after a package
restore (any build does one). The command is opt-in and copies the file to
.claude/skills/nti-ibmi-provider/SKILL.md; run it again after a package update
to refresh the skill.
Migrating from NTi 4
Version 5 keeps the NTi 4 API and connection string keywords. The differences below are deliberate; each has a documented remedy.
- UDT mappings (
NTiUDTMapping,SetUDTMappings) are removed. - The inert
[Obsolete]propertiesUseDefaultPorts,RetreiveSuccessMessages,IgnoreNonQueryResultandPreFetchare removed. untrustednow defaults tofalse: TLS server certificates are validated unless you opt out withuntrusted=true.- The blocking factor is adaptive by default; set
blocking factor=1000to restore the fixed v4 sizing. AdditionalFactorCallbackis obsolete: useAdditionalFactorProvider, which receives the authentication context (host, user).- Main classes are sealed, and
NTiExceptionderives fromDbException(existingcatch (NTiException)code keeps working). - Misused savepoints and double
Opennow throw instead of silently doing nothing; invalid connection string values throw at assignment. ConnectionStringhides the password once the connection is open, unlesspersist security info=true.PrecisionandScaleonNTiParameterfollow the standard byte basedDbParametercontract.- A program parameter built with an explicit ccsid no longer changes the process wide default encoding of other parameters.
Release notes
5.0.0
Complete rewrite of the NTi 4 provider: same public API and connection string keywords, new protocol, conversion and pooling engine (see Why version 5 above). New in 5.0: fully asynchronous engine (real async I/O fromOpenAsynctoDisposeAsync, cancellation-aware at every phase),default ccsidkeyword, async MFA callback with authentication context,ExecuteClCommandAsync/CallProgramAsync, service program procedure calls (CallServiceProgram/CallServiceProgramAsync),fetch aheadkeyword, adaptive blocking factor, sovereign CCSID conversion tables.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| .NET Framework | net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- Microsoft.Bcl.AsyncInterfaces (>= 9.0.2)
- System.Memory (>= 4.6.0)
- System.Threading.Tasks.Extensions (>= 4.6.0)
-
.NETStandard 2.1
- System.Runtime.CompilerServices.Unsafe (>= 6.1.0)
-
net10.0
- No dependencies.
-
net5.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Aumerial.Data.Nti:
| Package | Downloads |
|---|---|
|
Aumerial.EntityFrameworkCore
Entity Framework Core provider for IBM i, iSeries and AS/400 servers, built on the fully managed NTi Data Provider (DB2 for i). |
GitHub repositories
This package is not used by any popular GitHub repositories.