Embedded .NET Document-Relational Database
A lightweight database combining NoSQL flexibility with SQL reliability.
Built on SQLite. Powered by LINQ. Zero configuration.
SoloDB 1.4. Documents, relations and files, with generated NativeAOT operations, direct typed JSON and filesystem events. Get SoloDB 1.4 → Read the documentation →
Quick Start
dotnet add package SoloDB
using System.Linq;
using SoloDatabase;
using var db = new SoloDB("memory:quickstart");
var users = db.GetCollection<User>();
// Insert
users.Insert(new User { Name = "Alice", Email = "alice@example.com" });
// Query with LINQ
var found = users.FirstOrDefault(u => u.Email == "alice@example.com");
if (found != null)
{
// Update
found.Name = "Alice Smith";
users.Update(found);
// Delete
users.Delete(found.Id);
}
public class User
{
public long Id { get; set; }
public string Name { get; set; } = "";
public string Email { get; set; } = "";
}Features
SQLite Foundation
Built on the world's most deployed database engine. Battle-tested reliability with JSONB support for document storage.
Full LINQ Support
Strongly-typed queries with full IntelliSense. Where, Select, GroupBy, OrderBy, and 40+ more LINQ operations.
ACID Transactions
Full transactional guarantees with automatic rollback on exceptions. Thread-safe with built-in connection pooling.
Integrated File Storage
Hierarchical file system API with metadata support. Upload, download, and manage files directly in your database.
Polymorphic Collections
Store different derived types in a single collection. Query by base type or filter with OfType<T>().
Document-Relational DB
First-class document references with DBRef<T> and DBRefMany<T>. Automatic cascade insert, configurable delete policies, and LINQ-queryable joins.
Full NativeAOT Support
Publish C# and F# applications with generated operations for your models and queries. Follow the NativeAOT setup guide to get started.
Compiled Queries
Translate a query once, then pass fresh arguments each time you run it. Retain a compiled query for repeated searches and pages.
Direct Typed JSON
Read and write typed values as UTF-8 or UTF-16 without an intermediate JSON tree. Explore the direct JSON APIs.
Indexing Made Simple
using SoloDatabase.Attributes;
public class Product
{
public long Id { get; set; }
[Indexed(unique: true)]
public string SKU { get; set; }
[Indexed]
public string Category { get; set; }
}Powerful Transactions
db.WithTransaction(tx =>
{
var accounts = tx.GetCollection<Account>();
var from = accounts.GetById(fromId);
var to = accounts.GetById(toId);
from.Balance -= amount;
to.Balance += amount;
accounts.Update(from);
accounts.Update(to);
});File Storage
var fs = db.FileSystem;
// Upload with metadata
fs.Upload("/reports/q4.pdf", stream);
fs.SetMetadata(
"/reports/q4.pdf", "Author", "Finance");
// Download
fs.Download("/reports/q4.pdf", outputStream);Document Relations
public class Order
{
public long Id { get; set; }
public DBRef<Customer> Customer { get; set; }
public DBRefMany<OrderItem> Items { get; set; }
}
// Cascade-insert a new customer with the order
orders.Insert(new Order
{
Customer = DBRef<Customer>.From(
new Customer { Name = "Acme" }),
});Ready to Get Started?
SoloDB is open source under the LGPL-3.0 license with a special exception for single-file deployments.