Когда внешняя библиотека содержит поставщик LINQ и генерирует исключение при выполнении дерева динамических выражений, как я могу сломаться при вызове этого выражения?
Например, я использую сторонний поставщик LINQ2CRM, который позволяет мне вызвать метод Max<TSource, TResult>()
IQueryable
, но когда он выбрасывает InvalidCastException
, я не могу сломаться на месте, когда возникает исключение, что затрудняет просмотр трассировки стека, поскольку он уже отключен, когда отладчик разбивает его в моем коде. Я установил "break on throw" для указанного исключения. Настройки моего отладки:
Разъяснение того, где именно я хотел бы сломаться. Я не хочу нарушать LINQ Expression, но вместо этого я хочу разбить, когда выполняется дерево выражений, или, другими словами, когда метод расширения IQueryable
Max()
вызывает переопределение, предоставляемое LINQ поставщик. Верхняя часть stacktrace выглядит так, вот где я хотел бы сломать внутри (или выполнить шаг или что-то еще):
at XrmLinq.QueryProviderBase.Execute[T](Expression expression)
at System.Linq.Queryable.Max[TSource,TResult](IQueryable`1 source, Expression`1 selector)