Come gestite le eccezioni del database nell'applicazione?
Si sta provando a convalidare i dati prima di trasmetterli al DB o semplicemente fare affidamento sulla logica di convalida dello schema DB?
Provate a recuperare da qualche tipo di errore DB (ad es. Timeout)?Migliori pratiche di gestione delle eccezioni del database
Ecco alcuni approcci:
- dati Convalida prima di passarlo al DB
- convalida sinistra a DB e gestire le eccezioni DB correttamente
- Convalida su entrambi i lati
- Convalida alcuni vincoli evidenti nel mondo degli affari logica e sinistra convalida complessa a DB
Che approccio usi? Perché?
Aggiornamenti:
Sono contento di vedere crescere la discussione.
Proviamo a riassumere le risposte della comunità.
Suggerimenti:
- Convalida su entrambi i lati
- Controlla i vincoli della logica di business su lato client, e tanto DB fanno integrità controlla from hamishmcn
- Controllare in anticipo per evitare fastidio DB from ajmastrean
- check-in anticipato a migliorare l'esperienza utente from Will
- Mantieni il codice di interazione DB in posizione su semplificare lo sviluppo from hamishmcn
- Object-Relational Mapping (NHibernate, LINQ, ecc) può aiutare a trattare con vincoli from ajmastrean
- validazione lato client è necessario per motivi di sicurezza from Seb Nilsson
Avete qualcos'altro dire? Questo è convertito in domanda specifica di convalida. Ci manca il nucleo, ovvero "Buone pratiche degli errori relativi al database" quali sono da gestire e quali da ingannare?
[@hamishmcn] (http://stackoverflow.com/questions/39371/database-exception-handling-best-practices#39406). buon punto, una ragione per avere la convalida nel livello della logica aziendale è creare un'interfaccia utente user friendly. Ma avere queste convalide in più punti rompe il principio SECCO. Come riesci a mantenere sincronizzate le convalide di DB e client side? – aku