Attualmente sto lavorando con un codebase che utilizza il modello di dominio anemico e sto cercando di spostare più logica nei modelli di dominio in uno spostamento verso un modello di dominio e un dominio Driven Design, ma sono alle prese con il seguente problema.Come impostare campi privati su un modello di dominio nel repository
Ho un modello di dominio chiamato lavoro che assomiglia a questo,
public class Job
{
private DateTime _someOtherDate;
private DateTime _lastUpdated;
// this may be called from many different services
public void SetLastUpdated()
{
_lastUpdated = DateTime.UtcNow;
}
}
Ad un certo punto nel tempo, durante l'elaborazione di un lavoro che desidera impostare data dell'ultimo aggiornamento del lavoro a quel punto specifico nel tempo. Per fare questo ho creato un setter pubblico per questo come puoi vedere sopra.
Un problema sorge quando sto ritirando il lavoro dal database nel mio repository, poiché ora non ho un setter pubblico per questo campo perché l'ho limitato a SetLastUpdated()
.
Qualcuno può consigliare come consentire a questa proprietà di essere impostata nell'implementazione del repository quando si recupera il lavoro, ma non dal servizio in cui è limitato alla chiamata SetLastUpdated()
.
Aggiornamento 1) Ho aggiornato la domanda poiché la data di inizio era un cattivo esempio.
Update 2) Dalle risposte fornite, l'unico modo che posso vedere questo viene fatto è non usando automapper nel repository, l'aggiunta di un costruttore sulla classe di lavoro per l'impostazione _lastUpdated, e l'utilizzo di questo quando la costruzione del lavoro da restituire nel metodo di recupero del lavoro del repository.
Che tipo di schema stai utilizzando per idratare i tuoi modelli di dominio? Stai usando un ORM, o ricordi? Come sono i tuoi costruttori? – arootbeer
Sto usando AutoMapper per mappare i modelli di Entity Framework ai modelli di dominio. Qui è dove verrà impostata la data di inizio. Non ci sono costruttori sui modelli di dominio, sono anemici di design. – Jonathan
A differenza dei siti di forum, non utilizziamo "Grazie" o "Qualsiasi aiuto apprezzato" o firme su [so]. Vedi "[Se 'Hi', 'thanks', tagline e saluti saranno rimossi dai post?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts) –