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,自然符合以上所有要求