Skip to main content

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

DatabaseProvider observed in acceptanceFeature status
PostgreSQLNpgsql 10.0.3PASS
MySQLMySqlConnector 2.6.1PASS
SQLiteMicrosoft.Data.Sqlite 8.0.29PASS
SQL ServerMicrosoft SQL Server providerPASS

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.