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

首頁 > 開發 > 綜合 > 正文

SQL Artisan數據庫訪問組件下一版本完善功能概述

2024-07-21 02:31:40
字體:
來源:轉載
供稿:網友

     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在下一個版本實現的功能,可是現在項目忙沒多少空余時間去實現,看來要等一個比較長的時間才能完成。

       有興趣的朋友可以提一下意見和想法。

http://henryfan.cnblogs.com/archive/2006/05/23/407012.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宾川县| 蚌埠市| 静海县| 乐平市| 隆化县| 闽清县| 深泽县| 凌源市| 泸水县| 南充市| 天峨县| 独山县| 九江县| 隆昌县| 明水县| 闽侯县| 大丰市| 温泉县| 平乐县| 怀宁县| 大港区| 湘潭县| 固安县| 彭州市| 深泽县| 东山县| 祁阳县| 姚安县| 轮台县| 东乌珠穆沁旗| 吉木萨尔县| 屯留县| 扬中市| 铁岭市| 巍山| 威信县| 杨浦区| 遂平县| 兰坪| 吉林省| 吉安市|