XML-SQL查询
本文将介绍直接使用SQL语句的查询使用方法,主要有2种方式:
- XmlCommand
- CPQuery
ClownFish提供 XmlCommand 的类型允许你将SQL语句定义在XML文件中,与CPQuery相比:
- .NET代码中不再包含SQL语句,代码完全分离,甚至可以做到线上调整。
- 不支持动态拼接
XmlCommand 示例
如果希望 SQL代码与C#代码分离,我们可以将复杂的SQL语句放在XML文档中,例如以下片段:
<XmlCommand Name="batchDelete">
<Parameters>
<Parameter Name="@CustomerID" Type="Int32" />
</Parameters>
<CommandText><![CDATA[
delete from Customers where CustomerID > @CustomerID
]]></CommandText>
</XmlCommand>
然后可以这样调用它:
using( DbContext dbContext = DbContext.Create(connName) ) {
var args = new { CustomerID = 20 };
return await dbContext.XmlCommand.Create("batchDelete", args).ExecuteNonQueryAsync();
}
补充说明:
- 一个XML文件中可以包含多个XmlCommand节点
- XML文件的取名没有特殊要求,扩展名要求是 .config
- XML文件编码要求是 UTF-8 with BOM
- 多个XML文件中的XmlCommand节点名称不能相同
- 建议使用DataTools来维护XmlCommand,自然符合以上所有要求