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

首頁 > 開發 > 綜合 > 正文

SQL Artisan 1.3功能使用介紹

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

       經過一段時間的修改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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 朔州市| 广州市| 上高县| 土默特左旗| 定边县| 虹口区| 彭州市| 辽宁省| 巫溪县| 赣榆县| 繁峙县| 林甸县| 孙吴县| 中宁县| 凤山市| 江孜县| 黔西县| 临朐县| 河北省| 泽普县| 宁海县| 闽侯县| 铜梁县| 达拉特旗| 高陵县| 称多县| 铜川市| 普安县| 江永县| 比如县| 赤水市| 长沙市| 廉江市| 开化县| 宜兴市| 宝丰县| 观塘区| 阿坝县| 施甸县| 综艺| 社旗县|