Rhino eTL: операция соединения с бесхозными строками
Я впервые использую Rhino ETL в проекте, и я очень впечатлен его возможностями. Я использую операцию соединения для сопоставления двух источников данных.
Иногда могут отсутствовать данные, поэтому я переопределяю LeftOrphanRow, чтобы "регистрировать" ошибку. Поэтому я хотел бы выдать исключение, а затем в конце процесса собрать все возникшие исключения, используя GetAllErrors().
Но, как кажется, процесс прерывается с первым исключением. Это намеренно? Как лучше всего обращаться с OrphanRows (особенно, когда я хочу получить сводку всех строк-сирот для всех операций в конце процесса)?
1 ответ
Мне кажется, что проблема в том, что вы пытаетесь использовать исключения, чтобы сообщить о неисключительном событии. Это не совсем то, для чего нужны исключения, и, конечно, когда вы ожидаете, что исключение пройдет через стороннюю библиотеку, вы не должны полагаться на то, что эта библиотека будет вести себя каким-то конкретным образом по отношению к этому исключению.
Можете ли вы просто хранить где-нибудь список строк-сирот, например, глобально, и добавлять к нему всякий раз, когда вы сталкиваетесь с одним из ваших операций объединения? Затем, после завершения EtlProcess, просто распечатайте список. Вы можете также рассмотреть возможность использования log4net для достижения этой цели. Или даже просто поднять событие, на которое вы подписываетесь в другом месте и делаете все, что кажется подходящим.