При использовании Entity Framework вы можете столкнуться с ошибкой, гласящей "Validation failed for one or more entities. See 'EntityValidationErrors' property for more details." Причина появления этой ошибки в большинстве случаев - банальна, либо вы забыли какие ограничения существуют на полях в вашей базе данных, либо, если БД в вашей компании занимается отдельный человек, то он вам забыл о чем-то сообщить. ;)
EntityValidationErrors - это коллекция объектов DbEntityValidationResult, каждый из которых содержит информацию об ошибках одной EF-сущности в виде объектов DbValidationError.
На самом деле, ничего страшного в этой ошибке нет, и можно легко узнать в чем конкретно у нас ошибка в коде. Все, что для этого необходимо - это обернуться вызов метода SaveChanges() вот в такой блок try-catch:
try { DB.DB.SaveChanges(); } catch (DbEntityValidationException ex) { foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors) { Response.Write("Object: "+validationError.Entry.Entity.ToString()); Response.Write(" "); foreach (DbValidationError err in validationError.ValidationErrors) { Response.Write(err.ErrorMessage + " "); } } }
Теперь повторите все те действия в результате которых появилась эта ошибка и вы увидите описание того, что не так с вашими объектами EF простым и понятным языком (в зависимости от локализации вашей ОС, конечно.
Статья очень помогла. Никак не мог поймать ошибку на продакшене.
ОтветитьУдалитьСпасибо! мне тоже помогла!
ОтветитьУдалить+100500
ОтветитьУдалить000011100010110100011010000011100010111000101111000011100010111000011001
ОтветитьУдалить0000111000101111000110100000111000101110001000010000111000101110000110100
0001110001011100010111000001110000110110010110000010100000011100010111000
0110100000111000101110001011100000111000101110001010110000111000101111001
0110000001110001011110010000100001110001011100010111000001110001011100001
1110000101110001010000001110001011010001101000001110001011110001101100001
1100010111000011001000011100010111100011011000011100010111100101100000011
1000101111001011110001010000001110001011100001101100001110001011110010101
1000011100010111100011001000011100010111100011100000011100010111100100000
0000111000101110001000010000111000101110001010110000111000101110000110010
0010100000011100010111000100001000101000000111000101110001011010000111000
1011100010000100001110001011100010101000001110001011100001100100001110001
0111000101010000101000000111000101110001000010000111000101110001011010000
1110001011100001100100001110001011110010000000001110001011100001111000010
111
Спасибо огромное!
ОтветитьУдалить