2016-04-10 3 views
0

Я пытаюсь нажать 100 объектов продукта, созданных динамически, используя DBSet.AddRange().EF 6.0 DBSet.AddRange() - Как пропустить ошибки отдельных объектов

Если, например, предприятие первого продукта имеют некоторые проблемы данных и бросает исключения во время Commit(), всех остальных 99 субъектов продукта также не спасу.

Можно ли пропустить поврежденные объекты только для того, чтобы другие объекты могли быть сохранены с помощью DBSet.AddRange()?

+0

Если вы используете mvc, вы можете попробовать 'ModelState.IsValid' на своей« Модели »после этого добавить их отдельно и совершить, как предложено ниже. Richard – Eldho

+0

Данные проходят через плоский файл. Фоновый процесс прочитает этот файл для создания DTO & Entities и сбрасывает базу данных. По некоторым ограничениям мы должны выполнять эти операции с БД только через EF. –

+0

После прочтения файла вы можете создать DTO допустимых объектов, эта проверка должна быть выполнена в бизнесе и привязать действительные объекты к контексту. Как @Richard вы не можете проверить в контексте ef – Eldho

ответ

1

Вы не можете сделать это с помощью EF, вам нужно изменить свою логику и подтвердить свои сущности до, добавив их в контекст EF. В качестве альтернативы вы должны добавить их отдельно и зафиксировать после каждого из них, но это будет намного менее эффективно.

+0

Данные проходят через плоский файл. Фоновый процесс прочитает этот файл для создания DTO & Entities и сбрасывает базу данных. Итак, есть ли способ проверить сущность в этом сценарии фонового процесса, отличного от пользовательского интерфейса? –

+0

Ваш сценарий ничего не меняет, вы просто проверяете вручную, является ли объект действительным, и добавьте его в свой контекст, если это так. Вы не сможете получить EF для выполнения этого бита для вас - он потерпит неудачу, если * any * сущностей недействителен (как и должно). – Richard

 Смежные вопросы

  • Нет связанных вопросов^_^