SQL查询
本文将介绍直接使用SQL语句的查询使用方法,主要有2种方式:
- XmlCommand
- CPQuery
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>
然后可以这样调用它:
public class CustomerBLL : BaseBLL
{
public async Task<int> BatchDelete(int id)
{
var args = new { CustomerID = id };
return await dbContext.XmlCommand.Create("batchDelete", args).ExecuteNonQueryAsync();
}
}
补充说明:
- 一个XML文件中可以包含多个XmlCommand节点
- XML文件的取名没有特殊要求,扩展名要求是 .config
- XML文件编码要求是 UTF-8 with BOM
- 多个XML文件中的XmlCommand节点名称不能相同
- 建议使用DataTools来维护XmlCommand,自然符合以上所有要求
CPQuery
CPQuery: Concat Parameterized Query,
设计意图可参考:CPQuery, 解决拼接SQL的新方法
使用示例:
public class CustomerBLL : BaseBLL
{
public async Task<int> BatchDelete2(int id)
{
string sql = "delete from Customers where CustomerID > @CustomerID";
var args = new { CustomerID = id };
return await dbContext.CPQuery.Create(sql, args).ExecuteNonQueryAsync();
}
}