-
Notifications
You must be signed in to change notification settings - Fork 0
API Parity
Mark Lauter edited this page Feb 14, 2026
·
5 revisions
DynamoDbLite implements the IAmazonDynamoDB interface from AWSSDK.DynamoDBv2. This page documents which operations are supported, partially supported, stubbed, or not implemented, and highlights behavioral differences from real DynamoDB.
| Operation | Status | Notes |
|---|---|---|
CreateTableAsync |
Supported | Immediate ACTIVE status |
DeleteTableAsync |
Supported | Synchronous deletion |
DescribeTableAsync |
Supported | Exact item count and size |
ListTablesAsync |
Supported | All overloads |
UpdateTableAsync |
Partial | GSI create/delete; throughput changes accepted but no-op |
| Operation | Status | Notes |
|---|---|---|
PutItemAsync |
Supported | ConditionExpression, ReturnValues (ALL_OLD) |
GetItemAsync |
Supported | ProjectionExpression, ConsistentRead (no-op) |
DeleteItemAsync |
Supported | ConditionExpression, ReturnValues (ALL_OLD) |
UpdateItemAsync |
Supported | All UpdateExpression clauses, all ReturnValues modes |
| Operation | Status | Notes |
|---|---|---|
QueryAsync |
Supported | KeyConditionExpression, FilterExpression, pagination, index queries |
ScanAsync |
Supported | FilterExpression, pagination, index scans, legacy overloads |
| Operation | Status | Notes |
|---|---|---|
BatchGetItemAsync |
Supported | Multi-table, ProjectionExpression per table |
BatchWriteItemAsync |
Supported | Mixed put/delete, duplicate detection |
BatchExecuteStatementAsync |
Not Implemented | Throws NotImplementedException
|
| Operation | Status | Notes |
|---|---|---|
TransactWriteItemsAsync |
Supported | All action types, idempotency tokens |
TransactGetItemsAsync |
Supported | Multi-table, ProjectionExpression |
| Feature | Status | Notes |
|---|---|---|
| GSI at table creation | Supported | Up to 5 |
| LSI at table creation | Supported | Up to 5 |
| GSI via UpdateTable | Supported | With immediate backfill |
| GSI deletion | Supported | |
| Projection types (ALL, KEYS_ONLY, INCLUDE) | Supported | |
| Sparse indexes | Supported | |
| ConsistentRead on GSI | Supported | Throws exception (matches DynamoDB) |
| Operation | Status | Notes |
|---|---|---|
UpdateTimeToLiveAsync |
Supported | Enable/disable with backfill |
DescribeTimeToLiveAsync |
Supported |
| Operation | Status | Notes |
|---|---|---|
TagResourceAsync |
Supported | |
UntagResourceAsync |
Supported | |
ListTagsOfResourceAsync |
Supported |
| Operation | Status | Notes |
|---|---|---|
DescribeEndpointsAsync |
Stubbed | Returns dynamodb.localhost
|
DescribeLimitsAsync |
Stubbed | Returns hardcoded values (80K/40K) |
DetermineServiceOperationEndpoint |
Stubbed | Returns http://dynamodb.localhost
|
| Operation | Status | Notes |
|---|---|---|
ExportTableToPointInTimeAsync |
Supported | Local filesystem, DYNAMODB_JSON only |
DescribeExportAsync |
Supported | |
ListExportsAsync |
Supported | |
ImportTableAsync |
Supported | Local filesystem, DYNAMODB_JSON only |
DescribeImportAsync |
Supported | |
ListImportsAsync |
Supported |
All throw NotImplementedException:
CreateBackupAsyncDeleteBackupAsyncDescribeBackupAsyncDescribeContinuousBackupsAsyncListBackupsAsyncRestoreTableFromBackupAsyncRestoreTableToPointInTimeAsyncUpdateContinuousBackupsAsync
All throw NotImplementedException:
CreateGlobalTableAsyncDescribeGlobalTableAsyncDescribeGlobalTableSettingsAsyncDescribeTableReplicaAutoScalingAsyncListGlobalTablesAsyncUpdateGlobalTableAsyncUpdateGlobalTableSettingsAsyncUpdateTableReplicaAutoScalingAsync
All throw NotImplementedException:
DescribeKinesisStreamingDestinationAsyncDisableKinesisStreamingDestinationAsyncEnableKinesisStreamingDestinationAsyncUpdateKinesisStreamingDestinationAsync
-
ExecuteStatementAsync— throwsNotSupportedException -
ExecuteTransactionAsync— throwsNotSupportedException
All throw NotImplementedException:
DeleteResourcePolicyAsyncGetResourcePolicyAsyncPutResourcePolicyAsyncDescribeContributorInsightsAsyncListContributorInsightsAsyncUpdateContributorInsightsAsync
| Behavior | DynamoDB | DynamoDbLite |
|---|---|---|
| Table status transitions | CREATING → ACTIVE → DELETING | Immediately ACTIVE; synchronous deletion |
| GSI creation | CREATING status, eventual backfill | Synchronous backfill, immediately ACTIVE |
| Provisioned throughput | Enforced; throttling on exceeded capacity | Stored but not enforced; no throttling |
| Consumed capacity | Tracked and returned | Not tracked |
| ConsistentRead | Eventually vs strongly consistent | All reads are strongly consistent (SQLite) |
| TTL deletion | Items deleted ~48 hours after expiry; may still appear in reads | Items filtered instantly at read time; physically deleted within 30s |
| TTL enable/disable | Can take up to 1 hour | Immediate |
| Item count / table size | Updated approximately every 6 hours | Updated on every write (exact) |
| Table ARN | Region-specific, real account ID | arn:aws:dynamodb:local:000000000000:table/{name} |
| Export/Import | S3-based | Local filesystem |
| Export format | DYNAMODB_JSON and ION | DYNAMODB_JSON only |
| Parallel scan | Supports segments for parallelism | Not supported (TotalSegments/Segment ignored) |
| Idempotency token | Persisted server-side | In-memory cache with 10-minute TTL |
| UnprocessedKeys/Items | May return unprocessed items under throttling | Always empty (all items processed) |
| Auto-scaling | Adjusts throughput based on load | Not applicable |
| Encryption | At-rest and in-transit encryption | Not applicable (local storage) |
| Point-in-time recovery | Continuous backups | Not implemented |
| DynamoDB Streams | Change data capture | Not implemented |
| Global tables | Multi-region replication | Not implemented |
-
No parallel scan —
TotalSegmentsandSegmentparameters are ignored -
No capacity tracking —
ReturnConsumedCapacityhas no effect - No DynamoDB Streams — no change event notifications
- No auto-scaling — throughput values are decorative
- Export format — only DYNAMODB_JSON (ION not supported)
- Connection strings — must follow Microsoft.Data.Sqlite format
-
Paginators —
IDynamoDBv2PaginatorFactoryis not implemented (returns null)
Repo · NuGet · API Parity
Getting started
Reference
- Table Operations
- Item Operations
- Query and Scan
- Batch Operations
- Transactions
- Secondary Indexes
- TTL
- Tags and Admin
- DI and Configuration
- Concurrency
- Performance
- API Parity
- FAQ
Recipes
- DynamoDBContext for tests
- xUnit per-test isolation
- ASP.NET Core integration test fixture
- Migrating tests off DynamoDB Local
Internals