3 ms·
Expression trees are highly underrated. Compare C# ORMs to JS/TS for example. In C#, it is possible to use expression trees to build queries. In TS, the only
by CharlieDigital 1y ago
Expression trees are highly underrated.
Compare C# ORMs to JS/TS for example. In C#, it is possible to use expression trees to build queries. In TS, the only options are as strings or using structural representation of the trees.
Compare this:
var loadedAda = await db.Runners
.Include(r => r.RaceResults.Where(
finish => finish.Position <= 10
&& finish.Time <= TimeSpan.FromHours(2)
&& finish.Race.Name.Contains("New")
)
)
.FirstAsync(r => r.Email == "ada@example.org");
To the equivalent in Prisma (structural representation of the tree):
const loadedAda2 = await tx.runner.findFirst({
where: { email: 'ada@example.org' },
include: {
races: {
where: {
AND: [
{ position: { lte: 10 } },
{ time: { lte: 120 } },
{
race: {
name: { contains: 'New' }
}
}
]
}
}
}
})
Yikes! Look how dicey that gets with even a basic query!