Considera un servizio che aggiorna le tabelle di PersonDetail nel database. Sto usando EF che mappa la tabella con questa Entity. Quando un record viene aggiornato, non viene effettivamente aggiornato ma viene creato un nuovo record e viene creato uno vecchio, impostando HistoryCode su 0
Class PersonDetail
{
int age;
Date birthDate;
DateTime effectiveDate;
int sequenceNumber; //An incremental number.
int HistoryCode; //0 represents history record and 1 current record
}
Ora abbiamo un servizio che aggiorna i dettagli della persona
if(newPersonDetail.effectiveDate < currentPersonDetails.effectiveDate)
{
//update sequence number of currentPersonDetails by 1
//insert a new Person Details record and assign its sequenceNumber as the sequence number
//of currentPersonDetails and HistoryCode as 0 to represent this is an history record
}
else
{
//Make the currentPersonDetails HistoryCode to 0 from 1
//Insert a newPersonDetail with sequence number incremented by 1 and HistoryCode set to 0
}
Logic? Sto cercando di spostare la logica di accesso ai dati dal livello di servizio al livello del repository, ma non sono in grado di capire chiaramente quale parte di essa è considerata come logica aziendale e cosa è considerata logica di accesso ai dati.