Attualmente implementato il modello e lavorando sull'interfaccia utente per un'applicazione di pianificazione. Questa è solo un'applicazione interna per il lavoro tra ~ 5 persone che occasionalmente possono far funzionare l'applicazione contemporaneamente.
Verrà eseguito dalla rete e utilizzerà un database SQLite (comprendo i problemi di concorrenza e ritengo che non sarà un problema per il nostro utilizzo). Sembrerà qualcosa del genere:
+------------------------------------------------------------+
| |1/1/2018 | 1/2/2018 | 1/3/2018 | 1/4/2018 | 1/5/2018|
+------------------------------------------------------------+
|Jack |Available|Leave |Leave |Available |Leave |
|Jim |Available|Available |Available |Available |Available|
|John |Leave |Leave |Available |Available |Available|
+------------------------------------------------------------+
Il modello funziona correttamente con un'app console. Attualmente implementando le viste & guarda ora i modelli. Un problema a cui ho pensato per alcuni giorni è cosa fare sui dati obsoleti?
Alla fine implementerò un thread in background che controllerà il database a intervalli impostati dall'utente per un aggiornamento. Questo funzionerebbe bene per le letture, ma mentre parlo di seguito, questo non nega una collezione in memoria nel mio modello?
Tuttavia, non sono sicuro di cosa fare riguardo alle scritture. Quando un utente apporta una modifica alla disponibilità di qualcuno, presumo di voler mantenere tali dati immediatamente in modo che altri utenti possano essere informati. Ma questo non nega le collezioni nel modello (e il modello in realtà), se continuo a persistere direttamente dal viewmodel al database?
Inoltre, cosa devo fare se due utenti stanno apportando modifiche e mi trovo in una condizione di competizione in cui il 2 ° effettua una scrittura utilizzando dati obsoleti perché non ha mai ricevuto l'aggiornamento dal primo utente?
-> User clicks drop down for Jack on 1/1/2018
-> Drop down displays list of availability options (e.g. leave, available, unavailable, etc.)
-> user selects different availability option
-> updates viewmodel property with new selected availability
-> updates Jack's schedule in the model
-> ??? Persist to database immediately and/or do I even need a collection of schedules?
Preferirei farlo da solo e gestire questi problemi in quanto imparerei molto facendolo, quindi preferirei non utilizzare un framework ORM come Entity.