Jednostka (powiedzmy UserEntity) ma sztywne reguły dotyczące jej właściwości i może istnieć w 2 stanach - trwała (co oznacza, że ma wartość id
) i jest już utrwalana (co oznacza, że nie ma jeszcze modelu id
).Jak radzić sobie z walidacją jednostki domeny przed jej utrwaleniem?
Zgodnie z odpowiedzią na this question about how to handle required properties, "prawdziwa" UserEntity powinna być zawsze tworzona z przekazanym do konstruktora id
.
Jednak gdy potrzebuję utworzyć new UserEntity
z informacji wysłanych przez przeglądarkę, muszę mieć możliwość sprawdzenia poprawności informacji przed ich utrwaleniem w bazie danych.
W przeszłości po prostu tworzyłem pustą UserEntity (bez id
), ustawiałem nowe właściwości i sprawdzałem je - ale w tym nowym, bezpieczniejszym sposobie myślenia o Jednostkach nigdy nie powinienem utwórz nową UserEntity bez jej id
.
Nie chcę tworzyć DWÓCH miejsc, które znają metody sprawdzania poprawności właściwości UserEntity, ponieważ jeśli kiedykolwiek się zmienią (i będą), będzie to podwójny kod do aktualizacji i podwoi szanse na błędy.
Jak skutecznie scentralizować wiedzę o sprawdzaniu poprawności właściwości mojej jednostki?
Uwaga
Jeden pomysł miałem odbija in this question, w którym uważam przechowywania właściwości niepaństwowych, takich jak e-mail, hasło i nazwę w znormalizowanej wartości obiektu, który będzie wiedział o zasadach jego właściwości, mogą korzystać z różnych usług, takich jak kontroler, Validator i Repo lub Mapper.
Czy ktoś może wyjaśnić to w prostszy/inny sposób? – johnnietheblack