All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
从多个位置截取字符串的SQL语句_[SQL Server教程]
概率计算,PHP幸运星_php资料_编程技术
Winform中在Form上截取消息的两种方法_[Asp.Net教程]
ASP.NET—From验证:全部代码及讲解_.net资料_编程技术
delphi组件中常用的事件
Delphi浏览sql server数据库中的信息
C#教程:建立动态链接库
SQL,Server常见连接错误_[SQL,Server教程]
取得文件扩展名方法_[PHP教程]
SQL,Server,存储过程的分页_[SQL,Server教程]
Reading number is top 10 pictures
The money of more than 100 countries and regions9
The beginning and end
人造器官和铁肺人
鸡也看毛片
Beautiful Japanese beauty(漂亮的日本美女)2
这才叫绝色美女2
福利是必须的
The hot big eye big breast beauty1
西方气质的东方美女2
More attractive than sora aoi3
Download software ranking
Eclipse 4.2.2 For Win64
Eclipse-CALMSANNY (second edition)
Boxer's Top ten classic battle4
jdk1.6 for windows
Professional killers2 for Android
The hero
豪门浪荡史
asp.netWeb服务器高级编程
Tram sex maniac 2 (H) rar bag8
天龙八部最新服务端
归海一刀 published in(发表于) 2014/2/1 0:09:32 Edit(编辑)
SQL,Artisan数据库访问组件下一版本完善功能概述_[SQL,Server教程]

SQL,Artisan数据库访问组件下一版本完善功能概述_[SQL,Server教程]

SQL Artisan数据库访问组件下一版本完善功能概述_[SQL Server教程]

SQL Artisan现有的版已经在项目中运用,在使用的过程中得到的效果相当理想.刚接触这个组件的几个新同事通过了解已有例子,很快就能适应到项目开发过程中.组件的对象操作和编译检测大提高了编写效率,在项目中得到的效果自己也有点意想不到.

SQL Artisang下一个版本的功能主完善在表对象操作和对象映射方面;包括:表对象支持数据操作,对象继承,视图对象映射,统计对象映射等.为了让组件功能扩展更方便,把组件的数据映射方式进行重构,由原来的XML描述改成Attribute;并把相关应映射成员搬迁到HFSoft.Data.Mapping名称空间下.以下描述只是组件在新版本中具备的功能,大部分还在实现过程。


表对象的数据操作
新版本表对象(Table)由Expressions名称间搬迁到Mapping名称空间下.旧版本的表对象只支持表的关联操作功能比较单一.在功能完善后会支持数据的新增、删除、修改和查询操作。在程序中可以通过以下方式定义表和字段的对象:


Table tbl = new Table("Employees");
NumberField field = new NumberField("EmployeeID");


数据新增


Employees.TBL.Insert(
Employees._FirstName.Set("Fan"),
Employees._LastName.Set("Henry"),
Employees._BirthDate.Set(DateTime.Parse("1979-1-1"))
);


数据修改


Employees.TBL.Update(Employees._FirstName =="Fan",
Employees._City.Set("GuangZhou"),
Employees._Address.Set("TianHe"),
Employees._Region.SetNull());


数据删除


Employees.TBL.Delete(Employees._FirstName =="Fan");


数据查询


System.Collections.IList lst = Orders.TBL.Where(
Orders._OrderDate >= DateTime.Parse("1997-1-1")&
Orders._OrderDate < DateTime.Parse("1997-8-1")
).SelectObject();
foreach(Orders item in lst)
{
Console.WriteLine(item.OrderID);
}


统计查询


System.Data.DataSet ds = Orders.TBL.INNER(OrderDetails.TBL,OrderDetails._OrderID)
.Where(Orders._OrderDate >= DateTime.Parse("1997-8-1"))
.OrderBy(Orders._EmployeeID.DESC)
.GroupBy(Orders._EmployeeID)
.Select(SqlMath.Sum(OrderDetails._Quantity*OrderDetails._UnitPrice*(1-OrderDetails._Discount)).As("account"),Orders._EmployeeID);
foreach(System.Data.DataRow row in ds.Tables[0].Rows)
{
Console.WriteLine(row["account"]);
}


对象继承
这里的对象继承只是描述对象映射继承关系,通常用于后面所描述的视图对象。在数据查询过程中有经常要获取关联表的某些字段信息;如:在查询订单里需要获取相关雇员的姓名和客户名称,雇员和客户的其他信息是不需要的;这个时候可以继承订单类实现一个新的映射类。


[Table("",TableType.View)]
public class OrderView:Orders
{
[ViewColumn("Employees","FirstName")]
public string EmpFirstName
{
get;
set;
}
[ViewColumn("Employees","LastName")]
public string EmpLastName
{
get;
set;
}
[ViewColumn("Customers","CompanyName")]
public string CompanyName
{
get;
set;
}
}
System.Collections.IList lst
= (Orders.TBL.INNER(Employees.TBL,Employees._EmployeeID)&
Orders.TBL.INNER(Customers.TBL,Customers._CustomerID))
. SelectObject (typeof(OrderView));


通过以上对象的映射,组件不会加载多余的字段信息,从而获取更好的加载效率。这里有一个比较关心的问题就是OrderView是否能进行数据更新操作?在上的例子中OrderView是可以进行更新操作的,但只是会更新父类Orders映射部分其他部分不作更新。在操作过程中组件会验测对象的基类(一直找到最顶层),如果检测对象不是由表对象派生下来就不会进行任何更新操作并抛操作异常。


视图对象
视图对象类似数据库中的视图,通过自定义视图对象可以选择性地映射相关字段信息,很多时候映射表的所有字段过于臃肿;视图对象也可能通过表对象派生下来。以下通过视图对象获取雇员的编号和姓名:


[Table("",TableType.View)]
public class EmployeeView
{
[ViewColumn("","EmployeeID")]
public int ID
{
get;
set;
}
[ViewColumn("","FirstName+LastName")]


public string Name
{
get;
set;
}
}
System.Collections.IList lst
= Employees.TBL.SelectObject(typeof(EmployeeView));


通过视图对象可以灵活地获取相关数据信息。


统计对象映射


统计对象其实是视图对象的一种,是用于描述数据统计的方式和输出的结果。组件支持以下统计方式:Count,Max,Min,Sum,Avg.


制定一个统计对象如何下:


[Table("",TableType.View)]
public class StatOrder
{
[ViewColumn("","EmployeeID")]
public int EmployeeID
{
get;
set;
}
[StatColumn("","*",StatType.Count)]
public int Count
{
get;
set;
}
}
System.Collections.IList lst = Orders.TBL.SelectObject(typeof(StatOrder));


组件会自动根据对象的映射信息按雇员分组进行统计。如果想统计某个条件可以这样:


System.Collections.IList lst = Orders.TBL.Where(
Orders._OrderDate >= DateTime.Parse("1997-1-1")&
Orders._OrderDate < DateTime.Parse("1997-8-1")
).SelectObject(typeof(StatOrder));


以上主要描述SQL Artisan在下一个版本实现的功能,可是现在项目忙没多少空余时间去实现,看来要等一个比较长的时间才能完成。


有兴趣的朋友可以提一下意见和想法。


作者:henryfan 来源:博客园





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.