现在很多软件都直接使用ORM框架来进行数据库操作,也就此出现代码优先。
ORM框架一个麻烦是效率和复杂查询语句,在有些情况下并不好,而且难以控制生成的SQL.
另外一种则是直接写SQL语句,对于c#来说就是ado.net.
还有类似spring.net的框架,但是遗憾的是配置SQL的库还是有一定封闭性,基本和ORM绑定,或者需要自己操作数据库,没有将生成的SQL语句提供出来,我还没有找到类似的。因此,轮子来了。
采用XML配置SQL语句,一个语句就是一个Statement节点,携带ID属性,ID标记需要使用的SQL方法,程序将自动反射调用的类名称,方法名称,分别作为xml文件名称和节点名称。然后解析xml;
xml内部节点被映射成程序方法,主要有Isnotempty映射实体属性为空判断,Dynamic映射我们一般的条件判断,引用了动态linq,
方法的参数映射成SQL的参数。
定义的主要节点:where ,set,choose,when,othersize,witch,case,default,page判断连接
条件节点:IsNotEmpty,Dynamic
类似你会看见:
<Statement Id="Test" >
select * from test where id=@id
</Statement>
或者扩展
<Statement Id="Test" >
select * from test
<where IsNotEmpty="name">
name=@name
</where>
</Statement>
初步项目:https://github.com/jinyuttt/SmartXmlSql.git
项目中有 SmartXmlSqlMaper.xsd文件,可以下载载到本地提示关键字;
nuget:SmartXmlSql