经过一段时间的修改SQL Artisan1.3功能已经完成,新版本并没引入太多的新功能,主要着手于使用方便性上的改进和完善。在这个版本中你可以看到数据操作变得很方便简洁,包括数据查询和统计;大部分的操作方式都是基于条件的驱动,让使用者在数据查询和统计中只关心条件,从而达到简单快捷地实现相关数据操作功能。由于这个版对基础的修改比较多因此并不稳定,在这里发表组件使用功能的主要目的是想得到大家意见。 接下来介绍SQL Artisan1.3的功能使用,主要包括以下几个方面:数据修改操作,数据查询操作(包括复杂的关联查询),聚合统计。通过介绍组件使用的过程你会体会组件在数据操作上的方便性,其效果相信不会令你失望;当然更希望得到的是你宝贵的意见。 数据修改: 1)数据添加: 基于对象方式添加数据和其他持久化组件没多大区别,实例化相应实体对象后进行Add操作。 Employees item = new Employees(); if((DBMapping.Employees.FirstName ==”fan” & DBMapping.Employees.LastName ==”henry”).Count()>0) { Console.WriteLine(“雇员信息已经存在!”); } else { item.FirstName =”Fan”; item.LastName =”Henry”; item.HireDate = DateTime.Parse(“2001-12-25”); item.BirthDate = DateTime.Parse(“1992-1-28”); item.Photo = new byte[0]; item.ReportsTo=1; DAOContext.Add(item); } 组件除了添加对象方式添加数据以外,可以通过直接操作相关Table映射模型进行数据添加操作;通过这种方式可以灵活地控制在添加数据时操作那个字段模型。 DBMapping.Employees.Insert( DBMapping.Employees.FirstName.Set(“He”), DBMapping.Employees.LastName.Set(“LiQing”) ); 2)数据修改: 数据修改同样也提供两种方式,基于对象和字段模型。 //以对象方式更新 Employees item =(Employees)DAOContext.Load(typeof(Employees),1); item.City =”GuangZhou”; DAOContext.Edit(item); //以字段模型更新 (DBMapping.Employees.EmployeeID == 1).Update( DBMapping.Employees.City.Set(“GuangZhou”) ); 3)数据删除: 组件数据删除完成可以基于条件驱动的方式来进行操作。 //删除索引是1000 的雇员信息 (DBMapping.Employees.EmployeeID ==1000).Delete(); //删除索引是101,102和103的雇员信息 DBMapping.Employees.EmployeeID.In(101,102,103).Delete(); //删除FirstName是Fan或He的雇员信息 (DBMapping.Employees.FirstName==”Fan” | DBMapping.Employees.FirstName ==”He”).Delete(); 数据查询: 组件的数据查询主要有几种方式,通过DAOContext对象、Table模型对象和条件驱动方式。条件驱动是最简化的一种使用方式,因为下面描述的例程都是基于条件驱动的查询. 对象查询: //获取所有雇员信息 Expression exp = new Expression(DBMapping.Employees); System.Collections.IList list = exp.List(); //获取国家是USA的所有雇员信息 list = (DBMapping.Employees.Country==”USA”).List(); //获取订单日期在1997-7-1和1997-8-1之间订单记录 list =(DBMapping.Orders.OrderDate>= DateTime.Parse(“1997-7-1”) & DBMapping.Orders.OrderDate < DateTime.Parse(“1997-8-1”)).List(); //获取USA国家雇员的所有订单 list =(DBMapping.Orders.Employee==(DBMapping.Employees.Country ==”USA”)).List(); //获取SP地区客户的所有订单 list=(DBMapping.Orders.Customer ==(DBMapping.Customers.Region==”SP”)).List(); 视图对象查询: 组件是通过视图对象的方式来体现关联查询的,视图对象主要用于描述对象信息来源于那些表,通过那种方式进行关联和加载那些信息。这样可以集中统一地描述查询需求,从而达到一个比较好的代码重用效果,也简化在查询时一些烦琐信息的编写。 对象视查询例程: //获取国家是USA所有雇员的订单信息 list=(DBMapping.Orders.Employee ==(DBMapping.Employees.Country==”USA”)).ListTo(new OrderV()); //获取SP地区在1997-7-1到1997-8-1销售的订单 list =(DBMapping.Orders.Customer ==(DBMapping.Customers.Region==”SP”) & DBMapping.Orders.OrderDate >= DateTime.Parse(“1997-7-1”) & DBMapping.Orders.OrderDate < DateTime.Parse(“1997-8-1”) ).ListTo(new OrderV()); 制定视图对象: /// <summary> /// 订单关联查询描述实体类 /// 相关表:Orders,Employees,Customers; /// </summary> [TableMap(“”,TableType.View)] public class OrderV:Orders,HFSoft.Data.ITableView { public OrderV() { // // TODO: 在此处添加构造函数逻辑 // } #region ITableView 成员 /// <summary> /// 获以关联表对象 /// </summary> /// <returns>Table</returns> public HFSoft.Data.Mapping.Table GetTable() { // TODO: 添加 OrderV.GetTable 实现 return DBMapping.Orders.INNER(DBMapping.Employees,DBMapping.Employees.EmployeeID) & DBMapping.Orders.INNER(DBMapping.Customers,DBMapping.Customers.CustomerID); } #endregion private string mCustomerName; /// <summary> /// 客户名称 /// </summary> [ViewColumn(“CompanyName”)] public string CustomerName { get { return mCustomerName; } set { mCustomerName = value; } } private string mEmployeeName; /// <summary> /// 雇员姓名 /// </summary> [ViewColumn(“FirstName+LastName”)] public string EmployeeName { get { return mEmployeeName; } set { mEmployeeName = value; } } } 聚合统计: 组件只提供一个默认的聚合统计就是基于条件Count操作,此操作并不支持分组功能。但对于其他聚合统计可以通过视图对象的方式来完成,视图对象可以完成数据分组、字段运算等复杂的统计描述。 统计查询例程: //获取所有订单数 Expression exp = new Expression(DBMapping.Orders); int count = exp.Count(); //获取国家是USA所有雇员的订单数据 count=(DBMapping.Orders.Employee ==(DBMapping.Employees.Country==”USA”)).Count(); //统计所有订单的销售金额 SumPrice price =(SumPrice)exp.ListTo(new SumPrice())[0]; //统计1997-7-1到1997-8-1销售金额 price =(SumPrice)(DBMapping.Orders.OrderDate >= DateTime.Parse(“1997-7-1”) & DBMapping.Orders.OrderDate < DateTime.Parse(“1997-8-1”)).ListTo(new SumPrice())[0]; //汇总雇员销售金额 System.Collections.IList list = exp.ListTo(new SumPriceByGroup()); //汇总某个国家的雇员销售金额 list = (DBMapping.Orders.Employee ==(DBMapping.Employees.Country ==”USA”)).ListTo(new SumPriceByGroup()); 制定统计描述对象: /// <summary> /// 订单销售统计描述对象 /// </summary> [TableMap(“”,TableType.View)] public class SumPrice:ITableView { public SumPrice() { // // TODO: 在此处添加构造函数逻辑 // } #region ITableView 成员 public Table GetTable() { // TODO: 添加 OrderV.GetTable 实现 return DBMapping.Orders.INNER(DBMapping.Employees,DBMapping.Employees.EmployeeID) &DBMapping.Orders.INNER(DBMapping.Customers,DBMapping.Customers.CustomerID) & DBMapping.Orders.INNER(DBMapping.OrderDetails,DBMapping.Orders.OrderID); } private Double mPrice; [StatColumn(“Quantity*UnitPrice*(1-Discount)”,StatType.Sum)] public Double Price { get { return mPrice; } set { mPrice = value; } } #endregion } /// <summary> /// 按雇员分组销售统计描述对象 /// </summary> [TableMap(“”,TableType.View)] public class SumPriceByGroup:SumPrice { private int mEmployeeID; [ViewColumn(“Employees.EmployeeID”)] public int EmployeeID { get { return mEmployeeID; } set { mEmployeeID = value; } } } http://www.cnblogs.com/henryfan/archive/2006/09/10/500210.html
sql artisan 1.3功能使用介绍_数据库技巧
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » sql artisan 1.3功能使用介绍_数据库技巧
相关推荐
-      sql语句中的判断功能的使用方法
-      sql语句中的判断功能的使用方法
-      SQL语言中去掉小数点有效数字后面的所有0
-      ASP连接各种数据库的代码
-      在sql语句中实现md5功能
-      给access数据库减肥
-      asp连接access数据库代码(2)
-      更改 SQL Server 登录模式