Nun, da bist du ggf. hier falsch.
Aber in soweit:

.NET arbeitet immer asynchron !
Wieviele Sätze blockweise verarbeitet werden bestimmst du über die PageSize (o.ä.).
.NET regelt den Cursor intern !

Es funktionieren auch Update und Delete, allerdings BATCH.
Für die AS/400-Dateien muss nur ein UNIQUE-Key vorhanden sein, dann kann .NET den Update/Delete automatisch als SQL definieren, ansonsten wird diese Funktion abgelehnt.

Es gibt im Recordset auch eine Supports-Eigenschaft, in der festgestellt werden kann, ob das Recordset Update/Delete unterstützt.

Im Falle des Updates/Deletes kann ein Fehler ausgelöst werden, dass sich die Daten zwischenzeitlich geändert haben.
Über einen Filter kann man sich diese Sätze dann rausselektieren, da mittels UpdateBatch mehrere Operationen durchgeführt werden können und somit mehrere Sätze betroffen sein können.

Für das Arbeiten mit .NET kannst du die Designer verwenden um komfortabel Queries zu definieren.

PS:
Du solltes zum Arbeiten mit der AS/400 den ODBC-Treiber an Stelle des OLEDB IBMDA400 verwenden (ODBC-Provider von .NET), da dieser mehr Komfort bietet.