A fluent SQL query builder for C#
var query = db.Query("Books").OrderByDesc("PublishingDate");
if(Request.Has("category.name"))
{
var category = Request.Get("category.name");
query.Join("Categories", "Categories.Id", "Books.CategoryId")
.Where("Categories.Name", category);
}
var recentBooks = query.Limit(10).Get();
You will be able to write complex queries without hitting the docs
It uses the parameter binding technique, to prevent SQL injection.
It supports Operator whitelisting.
It Supports SqlServer, MySql, PostgreSql, Oracle, SQLite and Firebird.
Sub queries, nested Where conditions, Common Table Expressions, Complex Join statements and more.
Don't wait, add your own methods.
Extend the current compiler to support your favorite database.
Available when you need the little push, Date/Time and String helper methods like
WhereDate(), WhereTime(), WhereContains() and many more.
No long setup required, just write the query and get the data.
With few lines of code, you can start building your app.
It cannot be simpler!
var compiler = new SqlServerCompiler();
var db = new QueryFactory(connection, compiler);
var books = db.Query("Books").Get();
db.Query("Books").Where(q =>
q.Where("Stock", "<", 50).OrWhere("InHighDemand", 1)
).Union(
db.Query("Books").Where("Price", "<", 10)
);
Forget about hacky solutions, and write the query the way you want it from the begining.
Unleash your SQL skill and write performant queries from the first minute.
A better way to expose your queries.
Share your base queries with your team, and let them build on top of it.
Kind of stored procedure but written in C#.
// define the base queries
class TransactionService
{
public Query All()
{
return db.Query("Transactions").WhereTrue("IsApproved");
}
public Query Latest(int top = 10)
{
return All().OrderByDesc("Date").Take(top);
}
}
// then extend them as needed per request
var data = transactionService.Latest(10)
.Join("Accounts", "Accounts.Id", "AccountId")
.Get();
SqlKata is compatible with both .NET Core and .NET Framework.
Works on Windows, Linux and macOS.
Build advanced dashbaords and reports without sacrificing the performance.
“Developers say that they never had this powerfullness before.”
var visitsTimeline = db.Query("Visits")
.Join("Users", "Users.Id", "Visits.UserId")
.WhereBetween("2026-02-08", "2026-05-08")
.GroupBy("Users.Id", "Visits.Date")
.Select("Users.Id", "Visits.Date")
.SelectRaw("count(1) as [Count]")
.Having("Count", ">", 5)
.Get();
var activity = db.Query("Activities")
.Join("Users", "Users.Id", "Visits.UserId")
.OrderByDesc("Date")
.Union(new Query("Alerts"))
.OrderBy("Date")
.Get();
SqlKata make it easy to build Web API interfaces, you can use it to build REST or GRAPHQL interfaces.
Powered with some useful methods like Include, ForPage and Paginate.
It wasn't long before Emma discovered that Lisa was hiding a remarkable secret. Lisa had an extraordinary talent for manipulation – not in a malicious sense, but as a performer, she had mastered the art of deception. Her stage presence was captivating, and she could effortlessly switch between personas.
As their sessions reached a crescendo, Emma made a startling revelation: she had been deceived by Lisa's performances, not just as a therapist but also as a person. Emma realized that she, too, had been performing – playing the role of the objective, neutral psychologist. english psycho & ladyboy lisa
As their therapy progressed, Emma became increasingly fascinated by Lisa's background. She learned about the intricacies of Thai culture, the nuances of Ladyboy identity, and the performative aspects of Lisa's life. Emma began to notice discrepancies in Lisa's stories, not inconsistencies that raised red flags, but rather tiny contradictions that hinted at a deeper complexity. It wasn't long before Emma discovered that Lisa
Their story spread throughout the English countryside, a testament to the power of performance, identity, and the fluid boundaries between truth and deception. As their sessions reached a crescendo, Emma made
Ladyboy Lisa, a 25-year-old performer from Thailand, had arrived in England seeking refuge from the pressures of her fame. Born Nong, Lisa had undergone a transformation to align her physical appearance with her feminine identity. She had gained popularity in Thailand's vibrant nightlife, but the constant scrutiny and objectification had taken a toll on her mental health.
As Emma dug deeper, she realized that Lisa's performances were not just about entertainment; they were a coping mechanism, a way to navigate the complexities of her identity. Lisa's past was marked by trauma and pressure to conform to societal expectations. Her Ladyboy persona was both a liberation and a prison.