여러 테이블을 기반으로 관련 쿼리 및 통계를 작성하는 것은 사실 번거로운 작업입니다. 문자 기반 설명을 기반으로 한 많은 정보는 추출하고 공유하기 어렵기 때문에 다른 상황에서 필요할 때 다시 작성해야 합니다. 이러한 상황을 피하기 위해 SQL Artisan은 뷰 객체를 참조하고 뷰 객체를 통해 데이터 쿼리 정보를 설명합니다. 뷰 객체의 가장 큰 장점 중 하나는 기존 객체(엔티티 객체 또는 뷰 객체)에서 상속할 수 있다는 점입니다. ) 새로운 쿼리를 확장합니다. 실제 응용 프로그램에서는 기본 통계 보기 개체를 만든 다음 상황에 따라 특정 통계 개체를 파생할 수 있습니다(예: 다양한 정보에 따른 그룹화, 해당 필드 정보 표시 등).
다음은 몇 가지 간단한 루틴 코드입니다.
주문판매액 통계 기본 뷰 객체
/// <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
[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>
[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<EmployeeTotal> empt= exp .List<EmployeeTotal>();
List<ProductTotal> prot= exp.List<ProductTotal>();
Association Loading 관련 테이블 정보 필드
관련 테이블 정보 필드를 로드해야 하는 경우 엔터티 개체에서 상속된 뷰 개체를 생성할 수 있지만 구현을 기반으로 완전히 새로운 뷰 개체를 생성할 수도 있습니다.
상품 정보 뷰 객체
/// <summary>
/// 상품 정보 뷰 객체
/// </summary>
[TableMap("",TableType.View)]
public class ProductsView:Products,HFSoft.Data.ITableView
{
#region ITableView 회원
공개 가상 테이블 GetTable()
{
return DBMapping.Products.INNER(DBMapping.Categories, DBMapping.Categories.CategoryID)
& DBMapping.Products.INNER(DBMapping.Suppliers, DBMapping.Suppliers.SupplierID)
}
#endregion
비공개 문자열 mCategoryName;
[
ViewColumn("CategoryName"
)]
공개 문자열 CategoryName
{
get
{
return mCategoryName;
}
set
{
mCategoryName = value;
}
}
비공개
문자열
mCompanyName
;
return mCompanyName;
}
set
{
mCompanyName = 값
}
}
;
Expression exp = new Expression();
exp &= DBMapping.Suppliers.City == "GuangZhou";
exp.List<ProductsView>();
제품 보기 개체는 제품 카테고리 및 공급업체 정보를 소개합니다.
위는 SQL Artisan 다중 쿼리 통계 기능을 도입하는 간단한 루틴입니다. 구성 요소는 모든 데이터 출력을 엔터티 개체의 형태로 구현하려고 시도하지만(주로 액세스 조작성을 단순화하기 위해) SQL Artisan은 다음 기능을 완전히 지원하지 않습니다. 가장 일반적으로 사용되는 모든 SQL 문을 구현했습니다.
http://www.cnblogs.com/henryfan/archive/2006/10/30/544540.html