using System.Threading.Tasks;
using Faithlife.Data.SqlFormatting;
using Microsoft.Data.Sqlite;
public static async Task Main()
await using var connector = DbConnector.Create(
new SqliteConnection("Data Source=:memory:"),
new DbConnectorSettings { AutoOpen = true, LazyOpen = true });
await connector.Command(@"
id integer primary key autoincrement,
new Widget("First", 6.875),
new Widget("Second", 1.414),
new Widget("Third", 3.1415),
await using (await connector.BeginTransactionAsync())
foreach (var widget in widgets)
await connector.Command(Sql.Format($@"
insert into widgets (name, height)
values ({widget.Name}, {widget.Height})"))
await connector.CommitTransactionAsync();
foreach (var widget in await connector
$"select name, height from widgets where height <= {maxHeight}"))
Console.WriteLine(widget.ToString());
var (min, max) = await connector
.Command("select min(height), max(height) from widgets")
.QuerySingleAsync<(double, double)>();
Console.WriteLine($"minimum height {min}, maximum height {max}");
private record Widget(string Name, double Height);