问题是:给定一个理解LeftStr和RightStr的数据库后端:在自定义ADO.NET提供程序实现中,我会在哪里建立到不可变的ADO.NET规范函数的映射?
因此,我正在使用SQLite ADO.NET提供程序,它或多或少地起作用,直到遇到一些存在但名称不同的字符串函数。在缺少/错误映射的函数中有左和右的规范字符串函数。
在SQLite扩展中,等效函数映射到LeftStr和RightStr。
我在寻找信息时出现了不足。由于缺乏这个场景的文档,或者我找不到它的能力,我一直跟踪这个调用,直到用生成的SQL创建命令的工厂方法,并怀疑SemanticResolver是我最好的线索,但我在黑暗中用我能找到的唯一暴露的焊缝ProviderManifest.xml做了几次刺,但我没有joy。
发布于 2010-01-17 11:19:02
答案假设SampleEntityFrameworkProvider是引用实现。
对提供程序实现执行的每个sql命令都由SampleEntityFrameworkProvider.SampleProviderServices.CreateDbCommandDefinition.处理。
此方法调用CreateCommand,后者将DbCommandTree传递给类型为DbExpressionVisitor的SampleEntityFrameworkProvider.SqlGenerator。
SqlGenerator初始化用于处理翻译的静态字典。
我在SqlGenerator.InitializeCanonicalFunctionHandlers中找到了我要找的东西,并遵循了如下模式。
只需将一个新的处理程序方法添加到要处理的EDM函数的名称上的字典中。
在这种情况下,处理程序只需要在写出函数之前重命名它。
同样,这个功能的默认实现是HandleFunctionDefaultGivenName(DbFunctionExpression e,string storeFunctionName)。
https://stackoverflow.com/questions/2080525
复制相似问题