设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> 网络编程 >> ASP.NET >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
网页制作兼容Mozilla必须…
select控件在Mozilla和O…
PHP+MySQL应用中使用XOR…
详细介绍:Apache+PHP+M…
建立Apache+PHP3+MySQL驱…
使用外部CSS设置FlashMX…
Windows 2000下安装PHP4…
Windows2000下安装Apach…
PHP+MySQL下分页显示的实…
如何实现MySQL中的用户管…
  SQL Artisan多表查询和统计           
SQL Artisan多表查询和统计
 

   编写基于几个表的关联查询和统计的确是件烦琐的事情,由于基于字符的描述很多信息难以抽取出来共用,当其他地方需要这种情况的时候又必须重写。为了避免这情况SQL Artisan引用了视图对象,通过视图对象描述数据查询的信息;视图对象有一个最大的好处就是继承,可以从一个已经有的对象(实体对象或视图对象)继承下来扩展新的查询功能描述。实际应用中你可以建立一个基础统计视图对象,然后根据情况派生出具体的统计对象(如:根据不同信息分组,显示那些字段信息等).

下面是一些简单例程代码:

      订单销售金额统计基础视图对象

    /// <summary>

    /// 建立一个简单的订单销售金额统计类

    /// </summary>

    [TableMap("", TableType.View)]

    public class OrderStat:HFSoft.Data.ITableView

    {

        #region ITableView 成员

        public virtual Table GetTable()

        {

            // TODO:  添加OrderV.GetTable 实现

            return DBMapping.Orders.INNER(DBMapping.Employees, DBMapping.Employees.EmployeeID)& DBMapping.Orders.INNER(DBMapping.OrderDetails, DBMapping.Orders.OrderID)& DBMapping.OrderDetails.INNER(DBMapping.Products, DBMapping.Products.ProductID);

        }

        private Double mTotalize;

        [StatColumn("Quantity*[Order Details].UnitPrice*(1-Discount)", StatType.Sum)]

        public Double Totalize

        {

            get

            {

                return mTotalize;

            }

            set

            {

                mTotalize = value;

            }

        }

        #endregion

}

按雇员分组统计情况继承实现

    /// <summary>

    /// 按雇员进行分组统计

    /// </summary>

    [TableMap("", TableType.View)]

    public class EmployeeTotal:OrderStat

    {

        private int mEmployeeID;

        [ViewColumn("Employees.EmployeeID")]

        public int EmployeeID

        {

            get

            {

                return mEmployeeID;

            }

            set

            {

                mEmployeeID = value;

            }

        }

        private string mEmployeeName;

        [ViewColumn("FirstName+LastName")]

        public string EmployeeName

        {

            get

            {

                return mEmployeeName;

            }

            set

            {

                mEmployeeName = value;

            }

        }

 }

按产品分组统计继承实现

    /// <summary>

    /// 按产品进行分组统计

    /// </summary>

    [TableMap("", TableType.View)]

    public class ProductTotal : OrderStat

    {

        private int mProductID;

        [ViewColumn("Products.ProductID")]

        public int ProductID

        {

            get

            {

                return mProductID;

            }

            set

            {

                mProductID = value;

            }

        }

        private string mProductName;

        [ViewColumn("ProductName")]

        public string ProductName

        {

            get

            {

                return mProductName;

            }

            set

            {

                mProductName = value;

            }

        }

 }

统计时在不更改条件的情况,你只需要加载不同的描述类型就能实现不同需求的数据查询统计功能。

Expression exp = new Expression();

exp &= new HFSoft.Data.Mapping.NumberField("year(" + DBMapping.Orders.OrderDate.Name + ")", null)    == 1997;

List<EmployeeTotal> empt= exp.List<EmployeeTotal>();

List<ProductTotal> prot= exp.List<ProductTotal>();

关联加载相关表信息字段

当需要加载关联表相关字段信息时,可以建立一个继承于实体对象的视对象;不过也可以根据实现情况建立一个全新的视图对象。

       产品信息视图对象

    /// <summary>

    /// 产品信息视图对象

    /// </summary>

    [TableMap("",TableType.View)]

    public class ProductsView:Products,HFSoft.Data.ITableView

    {

        #region ITableView 成员

        public virtual Table GetTable()

        {

            return DBMapping.Products.INNER(DBMapping.Categories, DBMapping.Categories.CategoryID)

                & DBMapping.Products.INNER(DBMapping.Suppliers, DBMapping.Suppliers.SupplierID);

        }

        #endregion

        private string mCategoryName;

        [ViewColumn("CategoryName")]

        public string CategoryName

        {

            get

            {

                return mCategoryName;

            }

            set

            {

                mCategoryName = value;

[1] [2] 下一页  

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2006-11-22
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:admin    责任编辑:admin 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持