It appears that we made a breaking change when adding DbInExpression support. Specifically, new abstract members were added to the generic and non-generic DbExpressionVisitor classes:
/// <summary>
/// Typed visitor pattern method for DbInExpression.
/// </summary>
/// <param name="expression"> The DbInExpression that is being visited. </param>
/// <returns> An instance of TResultType. </returns>
public abstract TResultType Visit(DbInExpression expression);
/// <summary>
/// Visitor pattern method for DbInExpression.
/// </summary>
/// <param name="expression"> The DbInExpression that is being visited. </param>
public abstract void Visit(DbInExpression expression);
We should either decide to explicitly make a breaking change and force new providers to support the new expression or make these methods virtual, throw, and ensure that they are not called if the provider has not opted in to the new feature.