国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

SQL Artisan多表查詢和統計

2019-11-18 16:54:13
字體:
來源:轉載
供稿:網友

       編寫基于幾個表的關聯查詢和統計的確是件煩瑣的事情,由于基于字符的描述很多信息難以抽取出來共用,當其他地方需要這種情況的時候又必須重寫。為了避免這情況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;

            }

        }

        private string mCompanyName;

        [ViewColumn("CompanyName")]

        public string CompanyName

        {

            get

            {

                return mCompanyName;

            }

            set

            {

                mCompanyName = value;

            }

        }

}

  

Expression exp = new Expression();

    exp &= DBMapping.Suppliers.City == "GuangZhou";

exp.List<ProductsView>();

為了方便顯示,產品視圖對象引入了產品類別和供應商信息。

 

以上是通過簡單例程介紹SQL Artisan多查詢統計功能,組件試圖把所有數據輸出都以實體對象的方式體現來(主要簡化訪問操作性);不過SQL Artisan并沒有完全支持所有SQL語句的功能,只是實現了大部常用的功能。

http://www.survivalescaperooms.com/henryfan/archive/2006/10/30/544540.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 防城港市| 漯河市| 兰西县| 梓潼县| 泸州市| 成安县| 汪清县| 南漳县| 鄂州市| 江西省| 大兴区| 南华县| 阿城市| 涿鹿县| 新源县| 怀化市| 牙克石市| 北辰区| 茂名市| 呼伦贝尔市| 德化县| 九江县| 香港| 达拉特旗| 安溪县| 穆棱市| 巴彦淖尔市| 宜春市| 获嘉县| 曲沃县| 呼图壁县| 麦盖提县| 昌都县| 福建省| 通海县| 晋城| 平乡县| 西充县| 遂川县| 巴马| 陆良县|