commit 9d0079cbf0ab62f8f7ca6b38f15d2b2320a80bde Author: Willem van den Ende Date: Thu Sep 10 17:57:45 2026 +0100 Add mermaid diagrams of before (DbBase inheritance) and after (DTO + mappers) situation diff --git a/after-dto.mmd b/after-dto.mmd new file mode 100644 index 0000000..99dd7e1 --- /dev/null +++ b/after-dto.mmd @@ -0,0 +1,45 @@ +%% After: Client and Order become plain domain objects (no DbBase inheritance). +%% Dedicated *Dto classes carry data to/from the WebApp, and a mapper converts +%% each way, including the relations. EF dependency isolated to persistence layer. +classDiagram + class DbContext { + +SaveChangesAsync() + } + class DbBase { + +Guid id + } + class WebApp { + <> + } + class Client { + +Guid id + +string name + } + class Order { + +Guid id + } + class ClientDto { + +Guid id + +string name + } + class OrderDto { + +Guid id + +ClientDto client + } + class Mappers { + +ClientDto ToClientDto(Client c) + +Client FromClientDto(ClientDto dto) + +OrderDto ToOrderDto(Order o) + +Order FromOrderDto(OrderDto dto) + } + + DbContext ..> DbBase : still used by persistence layer + WebApp --> ClientDto + WebApp --> OrderDto + WebApp --> Mappers + Mappers <--> Client : maps each way + Mappers <--> ClientDto : maps each way + Mappers <--> Order : maps each way + Mappers <--> OrderDto : maps each way + Client "1" --> "*" Order : has many (domain relation) + ClientDto "1" --> "*" OrderDto : has many (DTO relation) diff --git a/before-after-dto-sketch.png b/before-after-dto-sketch.png new file mode 100644 index 0000000..98b50ec Binary files /dev/null and b/before-after-dto-sketch.png differ diff --git a/before-after-dto.mmd b/before-after-dto.mmd new file mode 100644 index 0000000..3851626 --- /dev/null +++ b/before-after-dto.mmd @@ -0,0 +1,28 @@ +%% Before: WebApp's domain classes inherit from DbBase (EF), +%% which depends on DbContext. Relations live inside the DB-backed classes. +classDiagram + class DbContext { + +SaveChangesAsync() + } + class DbBase { + +Guid id + } + class WebApp { + <> + } + class Client { + +Guid id + +string name + } + class Order { + +Guid id + } + + DbBase --> DbContext : uses (EF) + WebApp ..> DbBase : depends on + Client --|> DbBase : inherits + Order --|> DbBase : inherits + WebApp --> Client + WebApp --> Order + Client "1" --> "*" Order : has many + Order "*" --> "1" Client : open / close