|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
可怜的程序员,还是逃不出移植的命运!sql|统计编写基于几个表的联系关系查询和统计切实其实是件啰嗦的事变,因为基于字符的形貌良多信息难以抽掏出来共用,当其他中央必要这类情形的时分又必需重写。为了不这情形SQLArtisan援用了视图工具,经由过程视图工具形貌数据查询的信息;视图工具有一个最年夜的优点就是承继,能够从一个已有的工具(实体工具或视图工具)承继上去扩大新的查询功效形貌。实践使用中你能够创建一个基本统计视图工具,然后依据情形派生出详细的统计工具(如:依据分歧信息分组,显现那些字段信息等).
上面是一些复杂例程代码:
定单发卖金额统计基本视图工具
///<summary>
///创建一个复杂的定单发卖金额统计类
///</summary>
[TableMap("",TableType.View)]
publicclassOrderStat:HFSoft.Data.ITableView
{
#regionITableView成员
publicvirtualTableGetTable()
{
//TODO:增加OrderV.GetTable完成
returnDBMapping.Orders.INNER(DBMapping.Employees,DBMapping.Employees.EmployeeID)&DBMapping.Orders.INNER(DBMapping.OrderDetails,DBMapping.Orders.OrderID)&DBMapping.OrderDetails.INNER(DBMapping.Products,DBMapping.Products.ProductID);
}
privateDoublemTotalize;
[StatColumn("Quantity*[OrderDetails].UnitPrice*(1-Discount)",StatType.Sum)]
publicDoubleTotalize
{
get
{
returnmTotalize;
}
set
{
mTotalize=value;
}
}
#endregion
}
按雇员分组统计情形承继完成
///<summary>
///按雇员举行分组统计
///</summary>
[TableMap("",TableType.View)]
publicclassEmployeeTotal:OrderStat
{
privateintmEmployeeID;
[ViewColumn("Employees.EmployeeID")]
publicintEmployeeID
{
get
{
returnmEmployeeID;
}
set
{
mEmployeeID=value;
}
}
privatestringmEmployeeName;
[ViewColumn("FirstName+LastName")]
publicstringEmployeeName
{
get
{
returnmEmployeeName;
}
set
{
mEmployeeName=value;
}
}
}
按产物分组统计承继完成
///<summary>
///按产物举行分组统计
///</summary>
[TableMap("",TableType.View)]
publicclassProductTotal:OrderStat
{
privateintmProductID;
[ViewColumn("Products.ProductID")]
publicintProductID
{
get
{
returnmProductID;
}
set
{
mProductID=value;
}
}
privatestringmProductName;
[ViewColumn("ProductName")]
publicstringProductName
{
get
{
returnmProductName;
}
set
{
mProductName=value;
}
}
}
统计时在不变动前提的情形,你只必要加载分歧的形貌范例就可以完成分歧需求的数据查询统计功效。
Expressionexp=newExpression();
exp&=newHFSoft.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)]
publicclassProductsView:Products,HFSoft.Data.ITableView
{
#regionITableView成员
publicvirtualTableGetTable()
{
returnDBMapping.Products.INNER(DBMapping.Categories,DBMapping.Categories.CategoryID)
&DBMapping.Products.INNER(DBMapping.Suppliers,DBMapping.Suppliers.SupplierID);
}
#endregion
privatestringmCategoryName;
[ViewColumn("CategoryName")]
publicstringCategoryName
{
get
{
returnmCategoryName;
}
set
{
mCategoryName=value;
}
}
privatestringmCompanyName;
[ViewColumn("CompanyName")]
publicstringCompanyName
{
get
{
returnmCompanyName;
}
set
{
mCompanyName=value;
}
}
}
Expressionexp=newExpression();
exp&=DBMapping.Suppliers.City=="GuangZhou";
exp.List<ProductsView>();
为了便利显现,产物视图工具引进了产物种别和供给商信息。
以上是经由过程复杂例程先容SQLArtisan多查询统计功效,组件试图把一切数据输入都以实体工具的体例表现来(次要简化会见操纵性);不外SQLArtisan并没有完整撑持一切SQL语句的功效,只是完成了年夜部经常使用的功效。
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。 |
|