2012-05-09 10 views
7

He creado una API REST en MVC3 y una de las cosas que debo hacer es devolver un mensaje descriptivo cuando falla una operación de actualización o creación.Obteniendo los campos que causaron una excepción de cambios guardados en Entity Framework

Mensajes como "The update operation failed while creating the customer object." no son lo suficientemente buenos.

Mi siguiente pensamiento fue a llevar el mensaje de la excepción que devuelve algo como esto:

The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_Business_Category". The conflict occurred in database "MyDb_Dev", table "dbo.Category", column 'CategoryID'. 
The statement has been terminated. 

que parece ser demasiada información. Podría analizar column "CategoryID" fuera del mensaje de excepción ... No estoy seguro si eso es confiable.

¿Es posible configurar atributos para los campos para que cuando fallen pueda obtener la descripción del error de los campos? Estoy abierto a sugerencias.

Respuesta

0

lugar del código en un bloque intento de captura. Establezca un punto de interrupción en algún lugar de la sección de captura. A continuación, agregue un elemento de reloj llamado ModeloEstado.

ModelState.IsValid le dirá si el modelo es válido (o tiene errores).

ModelState.Keys le mostrará la lista de campos que contiene el modelo.

ModelState.Values ​​ le mostrará los valores de datos para cada uno de esos campos respectivos. Profundice en cada uno y verá un nodo Errores con un recuento de cuántos errores hay en ese elemento de datos. Busque el que tiene más de 0 errores. Tome nota de su índice y luego vuelva al ModelState.Keys [Indice anotado] para ver qué campo está causando el error.

Para ser sincero, una vez que haya llegado hasta aquí, tendrá toda la información que necesita para resolver cualquier error de este tipo. Lo dejaré para que lo sepas.

Cuestiones relacionadas