SQL Artisan1.2版Table模型功能描述
SQL Artisan有着明确的目标就是代替SQL语句进行数据库操作。虽然目标似乎很遥远,但在新版中已经实现了大部的SQL语句操作,包括在现实项目中面对比较多的多表关联查询和数据统计等。当然SQL Artisan的实现并不是为简单地代替SQL语句,方便灵活地操作数据库才是它的本质。
在1.2版本中主要对O/M部分进行强化,其中大部分的改变集中在Table模型中;通过Table模型可以对数据表进行增、删、改、查等操作,包括比较复杂质多表关联查询和统计。在实际应用中几呼所有数据操作都可以通过Table 模型来完成。
Table模型的操作方法:
Insert
用于表插入数据操作,可以执行映射的实体对象或指定相关字段信息。当Table为关联对象时不能进行此操作。
Update
用于表更新数据操作,可以执行映射的实体对象或指定相关字段信息。当Table为关联对象时不能进行此操作。
Delete
用于表删除数据操作,可以执行映射的实体对象或指定相关字段信息。当Table为关联对象时不能进行此操作。
Count
用于获取表中符合条件的记录数。
List
用于获取表中符合条件的记录映射到实体对象集中,当Table为关联对象时不能进行此操作。
ListTo
用于获取表中符合条件的记录映射到自定义实体对象集中,此操作常用于多表关联查询和数据统计。
Table模型相关操作方法用例(以MSSQL:NorthWind数据模型为例):
Insert方法用例:
用例1
Employees item = new Employees();
item.FirstName ="fan";
item.LastName ="henry";
item.ReportsTo = 2;
item.BirthDate = DateTime.Parse("1979-1-1");
item.HireDate = DateTime.Parse("2002-12-1");
item.Photo = new byte[0];
Employees.Mapper.Insert(item);
添加一条新的雇员信息
用例2
Employees.Mapper.Insert(
Employees.Mapper.FirstName.Set("He"),
Employees.Mapper.LastName.Set("LiQing"));
添加一条新的雇员信息,指定FirstName和LastName的字段值。
Update方法用例:
用例1:
Employees item = Employees.Mapper.GetByIndex(3);
item.Notes += "Test_Update";
Employees.Mapper.Update(item);
获取索引为3的雇员对象,修改Notes属性并更新。
用例2:
Employees.Mapper.Update(Employees.Mapper.FirstName =="Fan",
Employees.Mapper.Notes.Set("update test2"));
更新FirstName等于Fan记录的Notes字段值。
Delete方法用例:
用例1:
Employees.Mapper.Delete(Employees.Mapper.FirstName =="fan"
| Employees.Mapper.FirstName =="he");
删除FirstNamne等于fan或 等于he的记录。
Count方法用例:
用例1:
int count = Employees.Mapper.Count(null);
统计Employees表中所有记录数
用例2:
int count = Employees.Mapper.INNER(Orders.Mapper,Employees.Mapper.EmployeeID)
.Count(Employees.Mapper.EmployeeID ==3);
统计相关Employyes相关所有订单记录数
用例3
int count = Orders.Mapper.Count(Orders.Mapper.OrderDate >= DateTime.Parse("1997-7-1") & Orders.Mapper.OrderDate < DateTime.Parse("1997-8-1"));
统计OrderData大于等1997-7-1与小于1997-8-1的所有订单记录数。
List方法用例:
用例1:
System.Collections.IList list = Employees.Mapper.List();
获取所有雇员信息。
用例2:
System.Collections.IList list = Orders.Mapper.Where(Orders.Mapper.OrderDate >= DateTime.Parse("1997-1-1")& Orders.Mapper.OrderDate < DateTime.Parse("1998-1-1")).List();
获取1997-1-1到1998-1-1的所有订单信息.
用例3:
System.Collections.IList list = Orders.Mapper.Where(Orders.Mapper.OrderDate >= DateTime.Parse("1997-7-1")& Orders.Mapper.OrderDate < DateTime.Parse("1997-8-1") & Orders.Mapper.EmployeeID.In(2,3)).List();
获取1997-7-1到1997-8-1的雇员索引为1,2的所有订单信息
ListTo方法用例:
用例1:
System.Collections.IList list= Employees.Mapper.ListTo(typeof(EmployeeV));
根据EmployeeV模型来加载相关信息
用例2:
System.Collections.IList list =(Orders.Mapper.INNER(Employees.Mapper,Employees.Mapper.EmployeeID)
& Orders.Mapper.INNER(Customers.Mapper,Customers.Mapper.CustomerID)).ListTo(typeof(OrderV));
根据OrderV模型来加载相关信息
用例3:
System.Collections.IList list = Orders.Mapper.ListTo(typeof(EmployeeOrders));
用例4:
System.Collections.IList list = Orders.Mapper.Where(
Orders.Mapper.OrderDate.Between(
DateTime.Parse("1997-6-1"),
DateTime.Parse("1997-12-31")
)
).ListTo(typeof(EmployeeOrders));
统计出1997-6-1到1997-12-31所有雇员的订单数。
用例5:
System.Collections.IList list = Orders.Mapper.INNER(OrderDetails.Mapper,Orders.Mapper.OrderID)
.ListTo(typeof(EmployeeSale));
统计雇员销售总金额
用例6:
System.Collections.IList list = Orders.Mapper.INNER(OrderDetails.Mapper,Orders.Mapper.OrderID)
.Where(Orders.Mapper.OrderDate.ToObjectField().Between("1997-6-1","1997-12-31"))
.ListTo(typeof(EmployeeSale));
统计出1997-6-1到1997-2-31所有雇员销售金额。