Attualmente stiamo lentamente sostituendo un framework ORM personalizzato con Entity Framework (EF). Uno dei passaggi è assicurarsi che possiamo aggiornare e inserire record attraverso le viste del database con EF, proprio come stiamo facendo con l'attuale ORM. Le viste forniscono sicurezza filtrando i record accessibili per l'utente, impedendo l'accesso e la possibilità di aggiornare altri record.
Non riesco a capire come implementare correttamente questo approccio con EF e ho iniziato a chiedermi se è buona norma aggiornare e inserire (e talvolta cancellare) attraverso queste visualizzazioni. Quando google non riesco a trovare raccomandazioni di buone / cattive pratiche su questo argomento, solo il fatto che a volte anche altri usano questo approccio. Forse le mie capacità di ricerca non sono abbastanza sofisticate.
Per me sembra che le visualizzazioni siano intese come di sola lettura e aiutino l'utente a selezionare rapidamente i dati da potenzialmente più tabelle. L'esecuzione di un inserimento o di un aggiornamento su una vista non è buona per questo motivo, nonostante sia possibile.
Quali sono i vantaggi e gli svantaggi dell'utilizzo delle viste per inserire e aggiornare i record?
Ci sono anche problemi specifici durante l'installazione di Entity Framework?
Quello che ho trovato finora. Vantaggi:
- Sicurezza filtrando i record accessibili a livello di database
- L'inserimento in blocco funziona anche per le viste
Svantaggi:
- L'istruzione Select è più o meno bloccata quando è necessario aggiornare o inserire i record
- Specifico per EF, quando si utilizzano le viste Migrazioni improvvisamente è necessario essere trattati come una vista anziché una tabella. (correggimi se sbaglio)
Alcune informazioni:
- Usiamo EF 6.13
- È un database MSSQL
- Sono disponibili sia visualizzazioni di sola lettura sia visualizzazioni CRUD
- Alcune visualizzazioni hanno prestazioni terribili, principalmente perché non possiamo modificarle perché dobbiamo essere in grado di eseguire operazioni CRUD su di esse.
- Abbiamo circa 30 visualizzazioni
Spero che questo sia il posto giusto per porre questa domanda.