Ciao, vorrei dare anch'io il mio contributo:
@ducas sei stato chiarissimo: sulla virtuale macchina1 hai installato SQL Server 2019 Express con il tuo database, al quale accedi in remoto anche dalla macchina2, anch'essa virtuale, e hai configurato perfettamente l'accesso in remoto a SQL Server. Sulle due macchine gira lo stesso tuo software.
Tralasciamo per il momento il fatto (importantissimo) che non hai spiegato come hai gestito la Concorrenza Ottimistica, visto che in caso di lettura-scrittura simultanea da parte di due utenti, tutti i nodi verrebbero al pettine, i dati non sarebbero congrui e le eccezioni non mancherebbero.
Ora, stai sicuro che con Entity Framework, quando leggi un “record”, lo modifichi e lo riscrivi sul database, prima di fornit.SaveChanges(), per persitere i dati sul database devi settare su Modified lo State della tua Entity altrimenti non vedi la modifica neanche sulla macchina1, perchè essa non viene scritta.
In pratica, supponiamo che tu voglia cambiare il cognome di un fornitore:
1) leggi il “record fornitore" dal tuo Context che hai chiamato fornit mettendolo ad esempio nella Entity “fornitoreModificato”
2) cambi il cognome con: “Rossi”;
3) setti lo stato della Entity su Modified;
4) salvi i dati sul database.
In codice:
fornitoreModificato.Cognome = "Rossi";
fornit.Entry(fornitoreModificato).State = EntityState.Modified;
fornit.SaveChanges();
Con il SaveChanges() vedrai la modifica anche sulla macchina2.
Se invece, tu semplicemente aggiungi un nuovo fornitore (cioè aggiungi un nuovo oggetto al contesto), non hai bisogno di cambiare lo stato di questa nuova entity perchè ci pensa automaticamente Entity Framework e non hai bisogno neanche di preoccuparti della Concorrenza Ottimistica, di cui dovremmo invece anche parlare… (colonne RowVersion… tipi Timestamp… ConcurrencyCheck… ecc…)
Buon divertimento.