Voglio salvare tutte le stringhe sul mio DB in maiuscolo. Penso che il posto migliore per farlo sia sovrascrivendo SaveChanges()
sul mio DbContext
. So che ho bisogno di chiamare ToUpper()
su qualcosa, ma non sono sicuro su come chiamarlo.
public override int SaveChanges()
{
foreach (var entry in ChangeTracker.Entries().Where(e => e.State == EntityState.Added || e.State == EntityState.Modified))
{
//do something
}
return base.SaveChanges();
}
Non sono sicuro se sia saggio inquinare il tuo livello Database con questo vincolo. Questo limiterebbe la riusabilità del tuo database.
Molto spesso la definizione della struttura delle (tabelle del) database è separata dalla gestione dei dati nel database, che viene effettuata tramite un Database Abstraction Layer separato.
Questa separazione consente di riutilizzare la struttura del database per i database con altri vincoli (ad esempio, uno che consente stringhe minuscole o un database speciale per i test delle unità).
Questa separazione delle preoccupazioni è abbastanza spesso implementata usando il modello di repository. Questa separazione consente di modificare la funzionalità del database senza dover modificare la struttura del database.
È anche possibile utilizzare un database esistente che utilizza stringhe minuscole, poiché il livello del repository può convertire tutto in maiuscolo prima di restituire le stringhe interrogate.
Quindi, separando il database dalle funzionalità sui dati, è più facile riutilizzare il database per altri scopi e modificare i requisiti senza dover modificare i dati nel database: riutilizzabilità migliorata e manutenzione migliorata.