2011-02-06 17 views
9

Curioso acerca de cómo validar eficientemente que una propiedad determinada de un modelo CodeFirst es única. El ejemplo clásico es el nombre de usuario o el nombre para mostrar de un miembro.EF Codefirst validate unique property?

Tradicionalmente podría hacer esto estableciendo una restricción única en la base de datos o, alternativamente, haciendo una búsqueda durante una operación de inserción de inserción. Sé cómo agregar manualmente estas cosas en el DB mismo después de la generación, solo quiero ver si hay una forma de hacerlo como parte de la asignación de esquema proporcionada por el marco.

ACTUALIZACIÓN He descubierto que puedo reemplazar el método ValidateEntity en el DbContext, que conceptualmente permitiría que haga una búsqueda y luego invalida el objeto de prevenir el salve. Todavía estaría curiosidad por saber si hay una manera de aplicar una restricción única o similar en la base de datos

Respuesta

6

Código First (EF y en general) todavía no es compatible de forma nativa restricciones únicas. En this post mostré una forma de crearlos al mismo tiempo que su base de datos es creada por Code First (a través del método SQLCommand en una clase de Initializer personalizada) pero no es realmente diferente de crearla usted mismo manualmente. La otra forma es ValidateEntity que ha sugerido, pero igual crearía las restricciones únicas en la base de datos.

+0

No es perfecto, pero lo suficientemente bueno para mis propósitos, gracias ! – Paul

0

he publicado sobre esto en code project

En general, depende de los atributos que se pone en las clases para generar sus índices únicos

Cuestiones relacionadas