Elmah и DbEntityValidationException - PullRequest
4 голосов
/ 31 мая 2011

Я настроил проект с Elmah и EF4.1 Code First.

Проект выбрасывает System.Data.Entity.Validation.DbEntityValidationException, но Эльма не предоставляет достаточно подробностей, чтобы определить, какая проверка не удалась. Все, что зарегистрировано:

System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

Есть ли способ заставить Elmah расширяться и регистрировать свойство EntityValidationErrors?

1 Ответ

2 голосов
/ 22 июня 2011
List<IUserFeedback> errors = new List<IUserFeedback>();

try
{
    _dbContext.SaveChanges();
    Updated(this, HasUnsavedChanges);
}
catch (DbEntityValidationException ex)
{
    foreach (var x in ex.EntityValidationErrors)
    {
        foreach (var y in x.ValidationErrors)
        {
            if (!String.IsNullOrWhiteSpace(y.PropertyName))
                errors.Add(new UserFeedback() {
                    FeedbackFlags = TypeOfUserFeedbackFlags.Error,
                    Message = String.Format("Unable to save {0} due to an issue with its \"{1}\" value. The error returned was \"{2}\"",x.Entry.Entity, y.PropertyName, y.ErrorMessage)
                });
            else
                errors.Add(new UserFeedback() {
                    FeedbackFlags = TypeOfUserFeedbackFlags.Error,
                    Message = String.Format("Unable to save {0} due to the error \"{1}\"", x.Entry, y.ErrorMessage)
                });
        }
    }
}

return errors;
...