Convalida con una voce duplicata in ASP.NET 5 MVC 6

asp.net-core asp.net-core-mvc entity-framework-core

Domanda

Utilizzando asp.net 5, MVC 6, prima il codice, entità Framework 7, beta 8.

Comprendo che alcune convalide possono essere gestite tramite annotazioni sulle proprietà, ad esempio il tipo di dati, i valori min, max e gli script jquery, ma non sono sicuro di come nella convalida del codice una voce duplicata possa entrare nel database, come impedire una duplicazione -mail reg su un modulo.

C'è qualche annotazione che posso usare per questo sulla mia proprietà del modello o devo codificare qualcosa nel mio controller per gestire questa convalida personalizzata? Qualcuno ha un esempio da condividere?

Risposta popolare

EF7 non ha alcuna magia per prevenire i valori duplicati in una tabella. L'unico modo per convalidare i duplicati è fare un giro al database. Il modo migliore per farlo è con un vincolo univoco. Questo può essere espresso come un indice univoco. Qualsiasi tentativo di inserire una voce duplicata dovrebbe generare un'eccezione.

Detto questo, è possibile configurare EF7 per riconoscere l'indice univoco nel database nel metodo OnConfiguring. Vedi Indici: configurazione del modello nei documenti EF7.

        modelBuilder.Entity<User>()
            .Index(b => b.Email)
            .Unique();



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché