1.7 KiB
1.7 KiB
Fluent Builder API
The fluent API is built around interfaces like IDynamicSelectQueryBuilder, IDynamicInsertQueryBuilder, IDynamicUpdateQueryBuilder, and IDynamicDeleteQueryBuilder.
Core Select Flow
using (var query = db.From("users", "u")
.Where("u.id", 19)
.SelectColumn("u.first", "u.last"))
{
var result = query.Execute().ToList();
}
Typed Select
using (var query = db.From<User>("u")
.Where(x => x.u.id == 19)
.Select(x => x.u.All()))
{
var users = query.Execute<User>().ToList();
}
Parser Lambda Patterns
The parser supports patterns tested in DynamORM.Tests/Select/ParserTests.cs:
From(x => x.dbo.Users)From(x => x.dbo.Users.As(x.u))Join(x => x.Left().Accounts.As(x.a).On(x.a.userId == x.u.id))Where(x => x.Or(x.u.id > 100))Select(x => x.u.first.As(x.firstName))GroupBy(x => x.u.last)Having(x => x.Count() > 1)OrderBy(x => x.u.id.Desc())
Subqueries
var sub = new DynamicSelectQueryBuilder(db).From(x => x.dbo.Users);
using (var query = new DynamicSelectQueryBuilder(db)
.From(x => x(sub).As("u"))
.Select(x => x.u.All()))
{
var rows = query.Execute().ToList();
}
Scalar Helpers
var count = db.From<User>()
.Select(x => x.Count())
.ScalarAs<int>();
Modify Builders
db.Insert("users").Values("code", "301").Values("first", "Ada").Execute();
db.Update("users")
.Values("first", "Alicia")
.Where("id", 301)
.Execute();
db.Delete("users")
.Where("id", 301)
.Execute();
SQL Inspection
You can inspect generated SQL from builder objects:
var sql = query.CommandText();
Command text assertions are heavily used in parser tests.