🚀 OrmLite’s biggest release EVER: ServiceStack v10.4!
We emptied the wishlist:
🛡️ Multitenancy + safe SQL
🔍 Vector + full-text search
⚡ Compiled queries + bulk upserts
🌳 Recursive CTEs + window functions
🧬 Schema diff
…and so MUCH more!
🎬 Meet the new & improved OrmLite!
Find the slow query, inspect its plan, and verify your fix 🔍
📘 OrmLite query plans:
docs.servicestack.net/ormlit…
📊 Profiling Admin UI:
docs.servicestack.net/admin-…
Why is your .NET app slow? Find the SQL behind it 🔍
🎬 New video: find and fix slow queries with OrmLite
✅ Inspect query plans from C#
✅ Add an index and prove it worked
✅ Find your slowest queries from the browser
#dotnet
Dig into the docs for configuration, examples, and the rules that keep retries safe 👇
🔁 Retrying temporary errors:
docs.servicestack.net/ormlit…
📖 Read replicas:
docs.servicestack.net/ormlit…
Survive deadlocks without writing retry loops 🔁
🎬 New video: safe database retries and read replicas in .NET with OrmLite.
✅ Retry whole transactions safely
✅ Catch accidental writes to read replicas
✅ Let users read their own changes
#dotnet
Build it into your own .NET App with OrmLite:
📘 Full-text search: keyword matching, phrases & relevance ranking
docs.servicestack.net/ormlit…
📘 Vector search: semantic similarity & hybrid queries
docs.servicestack.net/ormlit…
Add full-text + AI semantic search to your .NET App using your existing RDBMS 🚀
🎥 See how OrmLite combines keyword matching, vector similarity, filters & joins in typed C# queries - all without adding a separate Search service or Vector DB!
Your JSON query can look like this:
x.Address.City == "London" && x.Tags.Contains("vip")
OrmLite translates typed C# into native JSON queries for SQLite, PostgreSQL, SQL Server & MySQL.
Explore the examples →
docs.servicestack.net/ormlit…
Store and query JSON data with typed C# 🧩
📹 New video:
OrmLite maps classes and lists to JSON columns - and lets you query inside them across SQLite, PostgreSQL, SQL Server & MySQL.
No extra tables. No raw SQL.
Explore the OrmLite APIs featured in the video:
📘 Recursive Queries: docs.servicestack.net/ormlit…
📘 Window Functions: docs.servicestack.net/ormlit…
📘 System-Versioned Tables: docs.servicestack.net/ormlit…
Advanced SQL doesn’t have to mean raw SQL strings 🧵
See how OrmLite brings Recursive CTEs, Window Functions, Top N Per Group & Temporal Tables to typed C#
Learn more:
📘 Batched Writes: docs.servicestack.net/ormlit… 📘 Compiled Queries: docs.servicestack.net/ormlit… 📘 Keyset Pagination with SeekAfter: docs.servicestack.net/ormlit…
Your query is fast. What about everything around it?
New #OrmLite video:
• Batch 1,000 inserts up to 8.5× faster—same code
• Compile queries: generate SQL once
• SeekAfter: page 1,000 in 0.23 ms vs 33.95 ms
Benchmarks, SQL, and trade-offs 👇
ServiceStack v10.4.2 fixes a path traversal vulnerability in FilesUploadFeature and FileSystemVirtualFiles. If your app uses them, please upgrade.
Our automated security scans also identified vulnerable transitive deps - see release notes for mitigation:
docs.servicestack.net/releas…
📚 Ready to try it? The docs cover the APIs, C# examples and database support:
🔒 Row locking & SKIP LOCKED
docs.servicestack.net/ormlit…
↩️ Returning updated & deleted rows
docs.servicestack.net/ormlit…
💸 Two requests deposit $10. Both succeed. One deposit disappears.
Your C# code looks correct. Your database balance isn’t. 😬
🎬 New OrmLite video: prevent lost updates with row locks, plus SKIP LOCKED queues, RETURNING & UPSERTS.
Try it in your own .NET App 👇
The OrmLite Schema Diff docs cover comparing models with tables, generating migrations for review, and logging schema differences at startup.
docs.servicestack.net/ormlit…
Sql.Fmt also sends enums, numbers and dates as typed params, expands lists into IN lists, and works with every raw SQL API, sync or async.
📘 Sql.Fmt: docs.servicestack.net/ormlit…
📘 OrderBySafe: docs.servicestack.net/ormlit…
📘 SQL injection: docs.servicestack.net/ormlit…
OrmLite gives you a huge surface of typed APIs with LINQ expressions. But when you need custom SQL, you don't have to give up safety.
Sql.Fmt lets you write C# interpolated strings, and every {value} is sent as a db param:
Sql.Fmt($"Author = {author}") → WHERE Author = @p0
You don’t need a new backend to start adding AI to your .NET App.
Opt in an existing read-only API. Keep your existing permissions and validation.
Let your team explore what they can build ✨
Code and walkthrough 👇
servicestack.net/posts/ai-ch…




