SQL queries
SELECT, INSERT, UPDATE, DELETE.
NTi Data Provider implements the ADO.NET model and provides full access to DB2 for i, with the methods and syntax .NET developers already know.
Built into the IBM i operating system, still often referred to as AS/400 or iSeries in many organizations, DB2 for i is recognized for its reliability and performance under high transaction volumes. Your business data has been stored there for years, secure and consistent.
At the modern .NET era, accessing it should be straightforward and native, regardless of where the application runs.
Native journaling, transaction recovery, and high availability, built into the system.
Customers, invoices, production data: your source of truth lives on IBM i.
SQL, XML, and JSON compatible: formats your teams already know.
Traditional drivers, whether ODBC or OleDB, are written in native code and compiled for a specific architecture. They run independently from the application: IBM i access goes through an external component, and the resulting application depends on the environment it is deployed on.
NTi completely changes the approach: from connection to data exchange, everything is handled by .NET code, portable across all platforms. As a result, there are no longer any deployment constraints for the application.
With NTi, DB2 for i access stays within the .NET application.
It is no longer carried by an external component installed on each environment.
Once the
Aumerial.Data.Nti
package is added to your project, DB2 for i access happens directly from your C# code, using the standard objects of the ADO.NET model.
A single package to reference in your .NET project.
Connection, command, reader, parameters, transactions.
Define your tables as C# classes, without writing SQL, with the dedicated extension
Aumerial.EntityFrameworkCore
.
Windows, Linux, Docker, ARM, IBM Power...
$ dotnet add package Aumerial.Data.Nti
using Aumerial.Data.Nti; using var conn = new NTiConnection( "server=IBMI;user=USER;password=PWD" ); conn.Open(); using var cmd = conn.CreateCommand(); cmd.CommandText = "SELECT COUNT(*) FROM MYLIB.CUSTOMERS"; var count = cmd.ExecuteScalar();
SELECT, INSERT, UPDATE, DELETE.
Protect your queries against SQL injection.
Commit and rollback to ensure the integrity of your business writes.
Stored procedure calls with input and output parameters.
BLOB, CLOB, XML, geospatial: all DB2 for i types mapped to .NET.
Reused connections to reduce repeated open calls.
Ideal for mapping your SQL results to your C# objects.
Use DB2 for i with the standard ORM of the .NET ecosystem.
View the EF Core pagevar customers = conn.Query<Customer>( "SELECT CUSTNO, NAME, CITY FROM MYLIB.CUSTOMERS" ).ToList();
Dapper is a .NET micro-ORM: with NTi, a single line, and your DB2 for i results are ready to use in C#.
NTi leverages the native mechanisms of IBM i to access DB2 for i.
Scalar functions, cursors, LOBs, geospatial data: processing you delegate to DB2 for i rather than your .NET code.
NTi connects using your IBM i username and password, through the *DATABASE and *SIGNON system services, like any standard IBM i connection.
On the database side, NTi establishes a dedicated TCP/IP connection (QZDASOINIT) that opens and closes with your application. No residual jobs, no resource drift.
You are not creating a parallel entry point into your system.
You are using your IBM i standard services, with a modern .NET layer on the application side.
With NTi Data Provider, the ADO.NET provider built for IBM i. Add the NuGet package
Aumerial.Data.Nti
to your project, configure your connection string, and open the connection.
The syntax follows the standard ADO.NET model:
NTiConnection, CreateCommand,
ExecuteReader and ExecuteNonQuery.
No. NTi does not rely on the native drivers typically used to connect .NET to DB2 for i, such as ODBC or OLE DB.
Database access is handled in managed .NET code, directly from the application. No driver needs to be installed on development machines, servers, or containers.
The result: native DB2 for i access that is 100% .NET, integrated into your application. You can target Windows, Linux, Docker, ARM, or IBM Power with the same project, without depending on a native driver to install, configure, or adapt per environment.
On the IBM i side, no third-party component is required to access DB2 for i. The required standard TCP/IP services must be active, and an NTi license key is required.
Yes. NTi implements the standard ADO.NET model.
You use the same patterns as with SQL Server or PostgreSQL: connection, SQL command, parameters, reader, transactions, and query execution. The code stays familiar for any .NET developer; only the provider changes.
NTi is also compatible with Dapper.
You can write your DB2 for i SQL queries and map results directly
to your C# classes, with no specific configuration.
NTi supports DB2 for i data types and their mapping to .NET types:
strings, numerics, decimals, dates, times, timestamps, and LOB fields such as
BLOB, CLOB, and XML.
You can also delegate processing to DB2 for i directly on the server side: scalar functions, aggregates, procedural logic. Rather than pulling large volumes of raw data into your .NET application to process it, you let DB2 for i do the work close to the data, and NTi retrieves the result.
Yes. DB2 for i can be used with Entity Framework Core through the dedicated extension
Aumerial.EntityFrameworkCore
, available separately on NuGet.
You can define your tables as C# classes and query DB2 for i without writing SQL: EF Core is an ORM that automatically translates your LINQ queries (an object-based syntax built into C#) into DB2 for i SQL. The extension handles DB2 for i type mapping to their .NET equivalents, decimals, dates, timestamps, LOB fields, with no manual configuration. It supports DB First, Code First, and EF Core migrations.