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.
In the vast digital landscape, files with obscure names can often spark curiosity and raise questions about their origin, purpose, and potential impact on computer systems. One such file that has garnered attention is the "V8-s68at02-lf1v198.bin" file. This article aims to provide an in-depth exploration of this enigmatic file, delving into its possible meanings, functions, and relevance in the digital world.
Before dissecting the specifics of the "V8-s68at02-lf1v198.bin" file, it's essential to understand the nature of .bin files in general. A .bin file, short for binary file, is a type of computer file that contains data in a binary format, which is unreadable by humans. Unlike text files, which store information in a human-readable format, binary files store data in a series of 0s and 1s that require specialized software or hardware to interpret. V8-s68at02-lf1v198.bin
The "V8-s68at02-lf1v198.bin" file remains an enigmatic entity, with its purpose and significance unclear without more context. However, by understanding the nature of .bin files, decoding the filename, and exploring possible functions and purposes, we can better appreciate the complexities of digital files. When handling unknown binary files, it's crucial to exercise caution, follow best practices, and prioritize system security and data integrity. If you're unsure about the file's authenticity or purpose, it's always best to err on the side of caution and seek guidance from a qualified expert or the file's intended source. In the vast digital landscape, files with obscure