Stiamo scrivendo un'applicazione .net Core MVC Web, ma penso che questa sia una domanda di programmazione generale.
Questa è in genere la struttura che usiamo con le nostre applicazioni Web. MV Core MVC, utilizzando l'iniezione delle dipendenze. Questo sembra funzionare come un modello quando abbiamo un semplice aggiornamento dei dati. Ma quando ci imbattiamo in regole aziendali più complicate, sembra faticare a flettere, o non siamo sicuri di come farlo.
ReferralController
ReferralService
ReferralRepository
EntityFramework --> SQLDB.
I nostri modelli per Entity Framework:
public class Referral
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public long? SubjectId { get; set; }
public ICollection<ReferralHistoryItem> ReferralHistory { get; set; }
[ForeignKey("StateId")]
public ReferralState State { get; set; }
public ReferralStateEnum StateId { get; set; }
}
public class ReferralHistoryItem
{
public ReferralHistoryItem() { }
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public int? ReferralId { get; set; }
[ForeignKey("ReferralId")]
public Referral Referral { get; set; }
public DateTime DateTime { get; set; }
[ForeignKey("EventId")]
public ReferralEvent Event { get; set; }
public ReferralEventEnum EventId { get; set; }
public bool Successful { get; set; }
}
In questo esempio, ogni volta che aggiorniamo lo "Stato" del Referral, vogliamo assicurarci di eseguire actionX, actionY, e inoltre di aggiornare l'entità ReferralHistoryItem con una voce per dirlo cambiato (audit).
Quale struttura potresti raccomandare che utilizziamo per raggiungere questo obiettivo e alcuni simili, in modo che, man mano che questa scala, non diventi difficile ricordare cosa aggiungere dove, evitando così la duplicazione / similarità del codice ?
Inizi ad aggiungere metodi di business logic al Modello di riferimento? O è una cattiva idea?