Qual è l'approccio migliore per aggiornare un campo del database quando cambia una proprietà di classe corrispondente?

2

Ho una classe con diversi campi.

public readonly byte         Id;
public          bool         Active       { get; set; }
public          List<Group>  Groups       { get; set; }
public          string       FirstName    { get; set; }
public          string       LastName     { get; set; }
public          Gender       Gender       { get; set; }
public          string       IdCard       { get; set; }
public          List<string> PhoneNumbers { get; set; }
public          string       Address      { get; set; }
public          string       PicturePath  { get; set; }
public          string       Comments     { get; set; }

Nel database, ho una tabella con i campi corrispondenti. Voglio che ogni volta che cambio il valore di questi campi, verrà aggiornato anche il campo corrispondente nella tabella.

Il mio primo istinto era di farlo nell'accessorio set , ma ho letto che " i getter di proprietà dovrebbero essere veloci e idempotente "e l'interrogazione del database non è sempre veloce.

Quindi ho pensato di creare un metodo UpdateDatabase() che dovrebbe essere invocato dall'utente dell'oggetto ogni volta che cambia il valore di una di quelle proprietà. Quindi il metodo aggiorna il database con i nuovi valori. Ma è molto noioso ...

Quale approccio è migliore? Consiglieresti un altro approccio completamente?

    
posta Sipo 17.05.2016 - 13:31
fonte

2 risposte

2

Raccomando un sistema ORM. Poiché hai codificato la tua domanda con C #, direi che una buona variante potrebbe utilizzare Entity Framework con un approccio Code First.

Ciò consentirà di modificare il codice e applicare automaticamente le modifiche al database. A seconda della configurazione, è possibile consentire al database di aggiornare automaticamente il modello Db o richiamare l'aggiornamento tramite la riga di comando direttamente in Visual Studio (simile all'approccio UpdateDatabase ()). Quest'ultimo ti consentirà un controllo più preciso sul tuo versioning del modello DB, ma per un progetto semplice dovrebbe anche essere accettata la prima versione (e corrispondere più esattamente alla tua domanda).

Per un semplice tutorial per principianti dai un'occhiata a questo tutorial

    
risposta data 17.05.2016 - 15:40
fonte
1

But it's very tedious...

Noioso, forse, ma gli aggiornamenti sono sotto il controllo del tuo [codice] e possono essere correttamente Transazionali, a differenza delle modifiche "casuali" che saltano al database man mano che cambiano le voci.

    
risposta data 17.05.2016 - 14:12
fonte

Leggi altre domande sui tag