前言:引擎作为中间件集成到用户的项目里面去,针对用户的数据库类型,需要作出SQL部分的分别实现。引擎默认数据库为MS SQLSERVER,同时也支持ORACLE, MYSQL, KINGBASE等不同类型的数据库。
1. Dapper对于多数据库实现的支持--SqlDialect
下图给出了Dapper项目中ISqlDialect接口的具体实现类。
2. Slickflow.NET 针对不同数据库的特性实现
在各个数据库特性SQL的写法上,比如SQLSERVER中的TOP语句,对应到其它数据库就不同,需要分别实现。所以引擎创建了DataProvider项目,针对这些特征,来分别实现具体场景的SQL。
3. SQL解析器
兼容多数据库的解析器之前考虑过,是个不错的方向,但是工作量也不小,不同数据库的各种特性都要考虑,缺乏一个统一的实现。而引擎大部分都是标准SQL,只是除了TOP的写法之外,个别的特殊就分别实现一下。但是也非常希望有一个统一的SQL解析器,会是一个非常实用的工具。
4. 总结
通过Dapper和Slickflow的DataProvider,用来实现多数据库的支持,完全可以满足客户不同类型的数据库部署。而且针对开发人员来说,SQL语句始终透明,可以进行编写或者后期优化。