Hazina Entity Types: Soft Delete, Multi-Tenant, and Ownership
Hazina Framework

Hazina Entiteitstypen: Soft Delete, Multi-Tenant en Eigendom

Niet elke entiteit heeft dezelfde functies nodig. Een eenvoudige opzoektabel heeft geen soft delete nodig. Een privédocument van een gebruiker vereist eigendomshandhaving. Hazina biedt vier entiteit-basisclasses die aansluiten bij jouw behoeften.

De Vier Basisclasses

Basisclass Functies Gebruikssituatie
EntityBase ID, CreatedAt, UpdatedAt Eenvoudige entiteiten, opzoektabellen
SoftDeleteEntityBase + IsDeleted, DeletedAt Entiteiten die nooit echt mogen verdwijnen
TenantEntityBase + TenantId, automatische filtering Multi-tenant SaaS-toepassingen
OwnedEntityBase + OwnerId, toegangscontrole Gebruikerseigendom content

EntityBase – De Basis

public class Category : EntityBase
{
    public string Name { get; set; } = string.Empty;
}
// Geeft je: Id, CreatedAt, UpdatedAt

SoftDeleteEntityBase – Niets Verdwijnt Echt

public class Invoice : SoftDeleteEntityBase
{
    public string Number { get; set; } = string.Empty;
    public decimal Amount { get; set; }
}
// DELETE /api/invoices/42 zet IsDeleted=true, DeletedAt=nu
// GET /api/invoices sluit automatisch verwijderde records uit
// GET /api/invoices?includeDeleted=true toont alles

TenantEntityBase – Automatische Gegevensisolatie

public class Project : TenantEntityBase
{
    public string Name { get; set; } = string.Empty;
}
// Elke query wordt automatisch gefilterd op TenantId
// Tenant A ziet nooit de gegevens van Tenant B
// Geen handmatige WHERE-clausules nodig

OwnedEntityBase – Toegangscontrole op Gebruikersniveau

public class Document : OwnedEntityBase
{
    public string Title { get; set; } = string.Empty;
    public string Content { get; set; } = string.Empty;
}
// Alleen de eigenaar kan zijn documenten zien/bewerken
// OwnerId wordt automatisch ingesteld vanuit de geauthenticeerde gebruiker

Functies Combineren

Nodig soft delete EN multi-tenancy? Maak je eigen basis:

public abstract class TenantSoftDeleteEntity : TenantEntityBase
{
    public bool IsDeleted { get; set; }
    public DateTime? DeletedAt { get; set; }
}

Het framework respecteert automatisch alle geconfigureerde gedragingen.

In de volgende post duiken we dieper in multi-tenancy – hoe Hazina gegevensisolatie in SaaS-toepassingen aanpakt.

Veelgestelde Vragen

Wat zijn de verschillende entiteitstypen in Hazina?

Hazina biedt vier basisclasses: EntityBase voor eenvoudige entiteiten, SoftDeleteEntityBase voor entiteiten die soft deleted kunnen worden, TenantEntityBase voor multi-tenant toepassingen, en OwnedEntityBase voor gebruikerseigendom content. Elke class is ontworpen om aan specifieke gebruikssituaties en vereisten te voldoen.

Hoe werkt de SoftDeleteEntityBase in Hazina?

De SoftDeleteEntityBase maakt het mogelijk om entiteiten als verwijderd te markeren zonder ze permanent uit de database te verwijderen. Wanneer een entiteit wordt verwijderd, wordt de IsDeleted-vlag op true gezet en de DeletedAt-tijdstempel vastgelegd, waardoor het mogelijk is om verwijderde records indien nodig op te halen.

Welke functies biedt TenantEntityBase voor multi-tenant toepassingen?

TenantEntityBase zorgt voor automatische gegevensisolatie door queries te filteren op basis van de TenantId. Dit betekent dat elke tenant alleen toegang heeft tot zijn eigen gegevens zonder handmatig WHERE-clausules toe te voegen, wat de ontwikkeling van multi-tenant SaaS-toepassingen vereenvoudigt.

Kan ik functies zoals soft delete en multi-tenancy combineren in Hazina?

Ja, je kunt een aangepaste basisclass maken, zoals TenantSoftDeleteEntity, die zowel soft delete als multi-tenancy functies combineert. Dit stelt je in staat om entiteiten te beheren die soft deleted moeten worden, terwijl je ook gegevensisolatie tussen tenants behoudt.

Terug naar overzicht
ENNL