複数のテーブルに基づいて関連するクエリや統計を記述するのは確かに面倒な作業です。文字ベースの記述に基づく多くの情報は抽出して共有することが難しいため、この状況が他の場所で必要になった場合は書き直す必要があります。この状況を回避するために、SQL Artisanはビュー・オブジェクトを参照し、ビュー・オブジェクトを通じてデータ問合せ情報を記述します。ビュー・オブジェクトの最大の利点の1つは、既存のオブジェクト(エンティティ・オブジェクトまたはビュー・オブジェクト)から継承できることです。 ) 新しいクエリを拡張します。実際のアプリケーションでは、基本的な統計ビュー オブジェクトを作成し、状況に応じて特定の統計オブジェクトを派生できます (さまざまな情報に基づいてグループ化する、それらのフィールド情報を表示するなど)。
次に、いくつかの簡単なルーチン コードを示します。
受注売上高統計基本ビュー Object
/// <summary>
/// 単純な受注売上高統計クラスを作成します
/// </summary>
[TableMap("", TableType.View)]
public class OrderStat:HFSoft.Data. ITableView
{
#region ITableView Member
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
("数量*[注文詳細].単価*(1-割引)"; .Sum)]
public Double Totalize
{
get
{
return mTotalize;
}
set
{
mTotalize = value
}
}
#endregion
}
従業員によるグループ統計の継承
/// <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
;
ロードするだけで済みます。記述タイプが異なると、さまざまなニーズに応じたデータ クエリや統計関数を実現できます。
式 exp = new Expression();
exp &= new HFSoft.Data.Mapping.NumberField("year("
+ DBMapping.Orders.OrderDate.Name + ")", null) == 1997;
.List<従業員合計>();
リスト<製品合計> prot= exp.List<製品合計>();
関連テーブル情報フィールドのロード
関連テーブル情報フィールドをロードする必要がある場合は、エンティティ オブジェクトから継承したビュー オブジェクトを作成できますが、実装に基づいて新しいビュー オブジェクトを作成することもできます。
製品情報ビュー オブジェクト
/// <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;
}
public
string CompanyName
;
戻り値 mCompanyName;
}
set
{
mCompanyName
=
値
;
Expression exp = new Expression();
exp &= DBMapping.Suppliers.City == "GuangZhou"
exp.List<ProductsView>();
表示を容易にするために、製品ビュー オブジェクトには製品カテゴリとサプライヤー情報が導入されています。
上記は、SQL Artisan のマルチクエリ統計関数を導入するための単純なルーチンです。このコンポーネントは、(主にアクセスの操作性を簡素化するために) すべてのデータ出力をエンティティ オブジェクトの形式で具体化しようとします。最も一般的に使用されるすべての SQL ステートメントを実装しました。
http://www.cnblogs.com/henryfan/archive/2006/10/30/544540.html