{"items":[{"title":"Filtering in Regira Entities: the basics","slug":"filtering-in-regira-entities-the-basics","summary":"How ?brandId=1&hasIntervention=true becomes SQL: one typed object that names your filters, one small builder that translates them - the foundation of the read pipeline, with a runnable sample to curl along.","publishedOn":"2026-08-12T05:18:57.8837875Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["dotnet","efcore","aspnetcore","api-design"],"imageUrl":"https://blog.regira.com/media/20","readMinutes":6,"url":"https://blog.regira.com/filtering-in-regira-entities-the-basics"},{"title":"Querying hierarchies at any depth: recursive SQL functions meet an in-memory TreeList","slug":"querying-hierarchies-at-any-depth-recursive-sql-functions-meet-an-in-mem","summary":"Three escalating strategies for self-referencing entities in EF Core — from ParentId filters to recursive CTE table-valued functions composed inside your query pipeline.","publishedOn":"2026-08-20T04:33:57.8837875Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["dotnet","efcore","sql-server","hierarchies","recursive-cte","architecture"],"imageUrl":"https://blog.regira.com/media/3","readMinutes":18,"url":"https://blog.regira.com/querying-hierarchies-at-any-depth-recursive-sql-functions-meet-an-in-mem"},{"title":"Game of Thrones as a data model: parties, typed relationships, and a TreeList of alliances","slug":"game-of-thrones-as-a-data-model-parties-typed-relationships-and-a-treeli","summary":"Using a domain everyone knows to stress-test a stakeholder model — people, houses, sworn banners and shifting alliances — and rendering the result as a navigable tree.","publishedOn":"2026-08-14T10:08:57.8837875Z","categories":[{"name":".NET","slug":"net"},{"name":"Architecture","slug":"architecture"}],"tags":["dotnet","csharp","efcore","domain-modeling","hierarchies","game-of-thrones"],"imageUrl":"https://blog.regira.com/media/10","readMinutes":33,"url":"https://blog.regira.com/game-of-thrones-as-a-data-model-parties-typed-relationships-and-a-treeli"},{"title":"From flat list to tree in one line of C#","slug":"from-flat-list-to-tree-in-one-line-of-c","summary":"A quick look at turning a flat collection with parent references into a navigable hierarchy, without writing recursion yourself.","publishedOn":"2026-08-21T05:18:57.8837875Z","categories":[{"name":".NET","slug":"net"},{"name":"Tips & Tricks","slug":"tips-tricks"}],"tags":["dotnet","csharp","hierarchies","tips"],"imageUrl":"https://blog.regira.com/media/1","readMinutes":4,"url":"https://blog.regira.com/from-flat-list-to-tree-in-one-line-of-c"},{"title":"From SQL to screen: rendering .NET tree data in a Vue SPA","slug":"from-sql-to-screen-rendering-net-tree-data-in-a-vue-spa","summary":"The follow-up to our recursive-CTE deep dive: rebuilding server-side hierarchies client-side with a TypeScript TreeList, a useTree composable, and drag-and-drop re-parenting.","publishedOn":"2026-08-19T10:17:57.8837875Z","categories":[{"name":"TypeScript","slug":"typescript"},{"name":"Vue","slug":"vue"}],"tags":["vuejs","typescript","hierarchies","frontend","spa"],"imageUrl":"https://blog.regira.com/media/4","readMinutes":7,"url":"https://blog.regira.com/from-sql-to-screen-rendering-net-tree-data-in-a-vue-spa"},{"title":"Anatomy of a list view: the overview composables in depth","slug":"anatomy-of-a-list-view-the-overview-composables-in-depth","summary":"What it actually takes to build a correct, URL-driven, paged list view in Vue 3 — dissecting useOverviewCore, useSearchView, useListView and useRouteOverview from the Regira entities client.","publishedOn":"2026-08-18T10:17:57.8837875Z","categories":[{"name":"Vue","slug":"vue"},{"name":"Architecture","slug":"architecture"}],"tags":["vuejs","typescript","composables","spa","architecture"],"imageUrl":"https://blog.regira.com/media/5","readMinutes":12,"url":"https://blog.regira.com/anatomy-of-a-list-view-the-overview-composables-in-depth"},{"title":"Forms that survive reality: useForm in depth","slug":"forms-that-survive-reality-useform-in-depth","summary":"Cancel that works twice, saves that don't lie, deletes that can be refused, and soft-deleted rows you can actually restore — dissecting the useForm composable from the Regira entities client.","publishedOn":"2026-08-17T11:46:57.8837875Z","categories":[{"name":"Vue","slug":"vue"},{"name":"Architecture","slug":"architecture"}],"tags":["vuejs","typescript","composables","forms","spa"],"imageUrl":"https://blog.regira.com/media/6","readMinutes":10,"url":"https://blog.regira.com/forms-that-survive-reality-useform-in-depth"},{"title":"One interface, any storage: building a configurable file-sync tool in .NET","slug":"one-interface-any-storage-building-a-configurable-file-sync-tool-in-net","summary":"A complete console tool that copies files between local disks, network shares and Azure Blob Storage — driven entirely by appsettings.json, built on a single storage abstraction.","publishedOn":"2026-08-16T04:16:57.8837875Z","categories":[{"name":".NET","slug":"net"},{"name":"Tooling","slug":"tooling"}],"tags":["dotnet","csharp","storage","azure","tooling"],"imageUrl":"https://blog.regira.com/media/7","readMinutes":10,"url":"https://blog.regira.com/one-interface-any-storage-building-a-configurable-file-sync-tool-in-net"},{"title":"Row-level multi-tenancy in ASP.NET Core: one marker, one filter, one primer","slug":"row-level-multi-tenancy-in-asp-net-core-one-marker-one-filter-one-primer","summary":"How to make tenant isolation a property of the data layer instead of a discipline problem — with a real multi-tenant fleet-management API as the case study.","publishedOn":"2026-08-15T03:23:57.8837875Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["dotnet","efcore","aspnetcore","multi-tenancy","architecture","security"],"imageUrl":"https://blog.regira.com/media/9","readMinutes":11,"url":"https://blog.regira.com/row-level-multi-tenancy-in-asp-net-core-one-marker-one-filter-one-primer"},{"title":"AND, OR and the endpoints","slug":"and-or-and-the-endpoints","summary":"The full read surface a registration exposes, why counts live next to pages, and how POSTing an array of SearchObjects gives OR a principled home - closing out the filtering series.","publishedOn":"2026-08-11T09:33:57.8837875Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["dotnet","aspnetcore","api-design","architecture"],"imageUrl":"https://blog.regira.com/media/28","readMinutes":3,"url":"https://blog.regira.com/and-or-and-the-endpoints"},{"title":"Free-text search that hits the index","slug":"free-text-search-that-hits-the-index","summary":"Why WHERE Title LIKE '%josé%' fails four ways, and how normalizing at save time - one attribute, one helper - gives you a search box that matches 'mercedes' to 'Mercedes-Benz' on a plain indexed column.","publishedOn":"2026-08-11T08:50:57.8837875Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["dotnet","efcore","search","api-design"],"imageUrl":"https://blog.regira.com/media/26","readMinutes":3,"url":"https://blog.regira.com/free-text-search-that-hits-the-index"},{"title":"Archiving: delete without losing data","slug":"archiving-delete-without-losing-data","summary":"One interface turns DELETE into soft delete: archived rows vanish from every query, stay reachable on purpose via ?archived=, and come back with a plain save - every step runnable against the sample API.","publishedOn":"2026-08-11T07:57:57.8837875Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["dotnet","efcore","aspnetcore","api-design"],"imageUrl":"https://blog.regira.com/media/25","readMinutes":3,"url":"https://blog.regira.com/archiving-delete-without-losing-data"}],"count":16,"page":1,"pageSize":12}