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
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.
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.
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.
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.