C# and .NET Runtime Guide
The .NET target generates C# entities, Request builders, Q and expression APIs, relation metadata,
native aggregates and audited graph persistence. It uses ADO.NET providers while keeping query
semantics aligned with generated Java Requests.
Query and mutation boundary
Generated execution receives only UserContext; provider and data-service dependencies are resolved
from that context.
var orders = await Q.CustomerOrders()
.Comment("Find orders awaiting review")
.Purpose("Prepare the authorized review queue")
.ExecuteForListAsync(ctx);
There is no (ctx, service) compatibility overload. Purpose is the transition to the executable
Request state, and a non-empty comment must already exist. Saving requires an audit reason:
await order.AuditAs("Approve reviewed order").SaveAsync(ctx);
Read the freshly generated Request and Entity source before using a method; casing and async suffixes are part of the generated contract.
Verified providers
| Database | Provider observed in acceptance | Feature status |
|---|---|---|
| PostgreSQL | Npgsql 10.0.3 | PASS |
| MySQL | MySqlConnector 2.6.1 | PASS |
| SQLite | Microsoft.Data.Sqlite 8.0.29 | PASS |
| SQL Server | Microsoft SQL Server provider | PASS |
SQL Server completed the same full Order Search Feature as the core three databases; it is not
classified as persistence-only. Builds should use -p:UseSharedCompilation=false in environments
where the Roslyn shared compiler can remain stuck.