SQL Artisan基于条件驱动的数据操作例程介绍(1)
在之前的随笔里已经介绍过以条件驱动的方式来进行数据访问操作。SQL Artisan的目标并不是把SQL语句以对象的方式体现在.Net中,而是尽量以简单方便的操作方式来访问数据库。由于是以条件为主导因此在数据查询操作时是不需要明确操作的表对象(当条件为一个空条件时才需要指定操作表,当存在条件引用时组件内部会进行表引用创建),从而简化操作语句的编写;除了数据查询外SQL Artisan的条件对象还直接支持数据删除、修改和聚合统计等操作。以下主要通过例程来介绍以条件驱动的操作数据所带来的灵活和方便;为了体现以上好处所以和传统SQL操作方式进行不同情况的对比。
SQL
--所有订单记录数
select count(*) from orders
--1997-7-1至1997-7-31订单数
select count(*) from orders where orderdate BETWEEN '1997-7-1' and '1997-7-31'
SQL Artisan
//所有订单记录数
Expression exp = new Expression(DBMapping.Orders);
Console.WriteLine(exp.CountOf());
//1997-7-1至-7-31订单数
Console.WriteLine(
DBMapping.Orders.OrderDate.
Between(DateTime.Parse("1997-7-1"), DateTime.Parse("1997-7-31")).CountOf()
);
SQL
--所有订单
select * from orders
--EmployeeID=3的订单
select * from orders where employeeid=3;
--EmployeeID =3 的8月份订单
select * from orders where employeeid=3 and orderdate BETWEEN '1997-8-1' and '1997-8-31'
SQL Artisan
//所有订单
Expression exp = new Expression(DBMapping.Orders);
List<Orders> orders = exp.List<Orders>();
//EmployeeID=3的订单
exp &= DBMapping.Orders.EmployeeID ==3;
orders = exp.List<Orders>();
//EmployeeID =3 的8月份订单
exp &= DBMapping.Orders.EmployeeID ==3;
exp &= DBMapping.Orders.OrderDate.Between(DateTime.Parse("1997-7-1"), DateTime.Parse("1997-7-31"));
orders = exp.List<Orders>();
SQL
--删除编码=3的雇员信息
delete from employees where employeeid=3;
SQL Artisan
//删除编码=3的雇员信息
(DBMapping.Employees.EmployeeID == 3).Delete();
SQL
--更新雇员编号=3的地区信息
update employees set region='
SQL Artisan
//更新雇员编号=3的地区信息
(DBMapping.Employees.EmployeeID == 3).Edit(
DBMapping.Employees.Region.Set("
以上通过简单的用例来介绍SQL Artisan的数据操作方式,实际上基于条件的操作方式可以方便地进行基于字段的聚合统计。接下一章介绍如何通过SQL Artisan以条件驱动的方式进行复杂的关联表查询和数据聚合统计;在这些烦琐的操作上SQL Artisan采用了比较特别的方式来描述查询信息,从而不会导致重复编写过长和臃肿的查询语句。