Meglio interrogare "prima" il db o catturare l'eccezione?

di il
3 risposte

Meglio interrogare "prima" il db o catturare l'eccezione?

Ciao a tutti ,vorrei evitare che una colonna abbia lo stesso valore per più righe ,per evitare questo ho aggiunto un vincolo unique,provando ad inserire lo stesso valore viene sollevata un eccezione,mi domandavo quanto era pesante produrre quest'eccezione e se forse conviene fare prima una select per verificare l'esistenza del valore (il codice è quanto meno migliorabile) :
 [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("IdMacroArea,NumeroRiga,NumeroColonna,TestoNomeMacroarea")] MacroAree macroAree)
        {
            if (ModelState.IsValid)
            {                
                try {
                    string TestoNomeMacroarea = macroAree.TestoNomeMacroarea;
                    var macro = await _context.MacroAree.FirstOrDefaultAsync(m => m.TestoNomeMacroarea == TestoNomeMacroarea);
                    if(macro==null) { 
                        _context.Add(macroAree);                    
                        await _context.SaveChangesAsync();
                    } else
                    {       
                        //da cambiare
                        string message = "esiste già un elemento con questo nome: ";
                        ViewData["messaggio"] = message + TestoNomeMacroarea;                        
                        return View();
                    }
                }
                catch(SqlException excp)
                {
                    //log here
                    string msg = excp.Message.ToString();
                }                
                return RedirectToAction(nameof(Index));
            }
            return View(macroAree);
        }
il codice potrebbe far sembrare superfluo il vincolo unique sulla colonna ma non mi sembra una grande soluzione..

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte