2011-02-06 10 views
9

Curioso su come validare in modo efficiente che una determinata proprietà di un modello CodeFirst sia univoca. L'esempio classico è il nome utente o il nome visualizzato di un membro.Codice EF convalida la proprietà univoca?

Tradizionalmente, potrei farlo impostando un vincolo Unique nel database o, in alternativa, effettuando una ricerca durante un'operazione di inserimento tentativo. So come aggiungere manualmente queste cose nel DB stesso dopo la generazione, solo per vedere se c'è un modo per farlo come parte della mappatura dello schema fornita dal framework.

UPDATE ho trovato che posso ignorare il metodo ValidateEntity sul DbContext, che concettualmente mi permettesse di fare una ricerca e quindi invalidare l'oggetto per impedire il salvataggio. Sarei comunque curioso di sapere se esiste un modo per applicare un vincolo Unique o simile nel database

risposta

6

Code First (e EF in generale) ancora non supporta nativamente i vincoli univoci. In this post ho mostrato un modo per crearli nello stesso momento in cui il database viene creato da Code First (tramite il metodo SQLCommand in una classe Initializer personalizzata) ma non è molto diverso dalla sua creazione manuale. L'altro modo è ValidateEntity che hai suggerito, ma vorrei comunque creare i vincoli unici sul database comunque.

+0

Non è perfetto, ma abbastanza buono per i miei scopi, grazie ! – Paul

0

ho postato su questo a code project

In generale, dipende dalle caratteristiche che si mette sulle classi per generare gli indici univoci

Problemi correlati