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"));

                     添加一条新的雇员信息,指定FirstNameLastName的字段值。

              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-11998-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-11997-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-11997-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-11997-2-31所有雇员销售金额。

下载相关用例代码

下载模型生成工具(支持MSSQL,ORACLE

posted on 2006-08-13 21:35  henry  阅读(1364)  评论(5编辑  收藏  举报

导航