分享
 
 
 

SQL Artisan 1.3功能使用介绍

王朝mssql·作者佚名  2008-05-30
窄屏简体版  字體: |||超大  

经过一段时间的修改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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有