扩展EF.core SqlTranslatingExpressionVisitor,检查参数值

时间:2018-07-03 08:32:14

标签: entity-framework-core

我们扩展了SqlServerSqlTranslatingExpressionVisitor并重写了几个访问者方法,以便针对某些数据类型/比较重写查询的特定部分。这可以按预期工作,但是为了在访问/转换给定的ParameterExpression时优化结果表达式,我们需要检查相应的参数值。

我们花了几天的时间检查代码并测试不同的场景,但是仍然很不幸。有谁知道在SqlServerSqlTranslatingExpressionVisitor的上下文中是否可以访问查询参数(在QueryContext.ParameterValues上找到),如果可以,如何?还有其他想法吗?

已解决:

找到了另一个解决方案。最初的方法是错误的。由于查询的原因,不应根据参数更改表达式。我们仍然在SqlServerSqlTranslatingExpressionVisitor中重写某些表达式以采用特定的SQL Server选项,但与查询参数无关。

所需的参数转换将转为ParameterExtractingExpressionVisitor的子类,在此我们现在根据需要进行初始数据类型转换。

0 个答案:

没有答案