Эквивалентная структура сущности, эквивалентная ADR.Net DataRow.HasErrors? - PullRequest
0 голосов
/ 30 марта 2012

Было бы неплохо, если бы платформа Entity имела ADO.Net-эквивалент DataRow.HasErrors.

Я сталкиваюсь со случаями, когда сервер возвращает ошибки при моем сохранении (например, «двоичные / строковые данные будут обрезаны, необнуляемые поля установлены на ноль и т. Д.), И нет способа определить, какая сущностьвызвал проблему. В ADO.Net это было проще, так как после того, как я сказал DataAdapter сохранить изменения, я мог бы просто просмотреть все datarows и просто проверить те, на которых были HasErrors. Конечно, это не определило бы поле, но по крайней мерескажите мне, какая строка вызвала проблему.

Я не могу найти сущность, эквивалентную этой. Кто-нибудь знает, есть ли такая?

1 Ответ

1 голос
/ 30 марта 2012

В обоих описанных вами случаях вы получите DbUpdateException при попытке сохранить.

Это исключение имеет свойство, называемое Entries .Вы можете использовать это свойство, чтобы получить объекты, которые вызвали сбой.Каждая сущность является DbEntityEntry объектом, который имеет свойство, которое имеет действительную сущность , плюс загружает дополнительную информацию о том, что было ошибкой и т. Д.

Так что в случае, еслиВы описываете, просто поймайте исключение и посмотрите на коллекцию Entries, чтобы выяснить причину проблемы примерно так:

try
{
    c.SaveChanges();
}
catch (DbUpdateException ex)
{                   
    IEnumerable<object> myBadEntities = 
        ex.Entries.Select(e => e.Entity);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...