Table of Contents

API levels

There is one client and one pipeline, with four ways in. Use the highest level that fits. You can drop down for one call: all levels share a client, its retries and its telemetry.

orders and shop are the tables of the shop.

Level You write Use it for
Table<T> with generated entities orders.Get(Order.Keys.Of("alice", 1)) Application code. Start here.
Table<Item> shop.Get("CUSTOMER#alice", "PROFILE") The same commands without a model: tools, migrations, attributes you do not map.
Requests (using DynaSharp.Requests) client.GetItemAsync(new GetItemRequest { ... }) Every DynamoDB operation as a request and a response that mirror the service. Table administration beyond CreateTable() lives here.
Raw client.SendRawAsync("ListTables", """{}"""u8.ToArray()) UTF-8 JSON in, UTF-8 JSON out, through the same signing and retries.

You can tell which level a line uses by what it names: Keys and Attrs mean a typed table, strings mean Table<Item>, and new ...Request means the request API. item.To<T>() and Item.From(entity) cross between levels.

One command engine

The first two levels share one command engine: ref struct chains that write JSON as you call them. A chain is built and sent in one expression, so it works in pooled buffers that go back at the end, and the benchmarks show what a call allocates in all. An analyzer explains the compiler error if you hold on to one across an await: DYNA201 under Commands on the diagnostics page.

The API reference lists every type of every level.