Access DB2 for i
from .NET and C#

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.

  • No driver, 100% .NET
  • Compatible with .NET Core, .NET 6 to 10
  • Stored procedures, transactions, native types...

DB2 for i,
built for enterprise

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.

Trusted reliability

Native journaling, transaction recovery, and high availability, built into the system.

Centralized data

Customers, invoices, production data: your source of truth lives on IBM i.

Open standards

SQL, XML, and JSON compatible: formats your teams already know.

.NET access to IBM i
next generation

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 a driver
.NET App
ADO.NET wrapper
Driver (ODBC, OleDB, iDB2...) Platform-dependent native code
IBM i
With NTi
.NET App
NTi
IBM i

With NTi, DB2 for i access stays within the .NET application.
It is no longer carried by an external component installed on each environment.

DB2 for i integrated
into your .NET project

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.

NuGet

A single package to reference in your .NET project.

ADO.NET

Connection, command, reader, parameters, transactions.

Entity Framework Core

Define your tables as C# classes, without writing SQL, with the dedicated extension Aumerial.EntityFrameworkCore .

Cross-platform

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();

Full DB2 for i access
in standard C#

SQL queries

SELECT, INSERT, UPDATE, DELETE.

Parameterized queries

Protect your queries against SQL injection.

Transactions

Commit and rollback to ensure the integrity of your business writes.

SQL procedures

Stored procedure calls with input and output parameters.

DB2 for i types

BLOB, CLOB, XML, geospatial: all DB2 for i types mapped to .NET.

Connection pool

Reused connections to reduce repeated open calls.

Dapper

Ideal for mapping your SQL results to your C# objects.

With Dapper
var 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#.

Built for IBM i

NTi leverages the native mechanisms of IBM i to access DB2 for i.

SQL delegated to DB2 for i

Scalar functions, cursors, LOBs, geospatial data: processing you delegate to DB2 for i rather than your .NET code.

IBM i authentication

NTi connects using your IBM i username and password, through the *DATABASE and *SIGNON system services, like any standard IBM i connection.

Clean connections

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.

Frequently asked questions