62,047
社区成员
发帖
与我相关
我的任务
分享
public abstract class forumAverage<valueType> : publishData.dataModel.forumAverage.sqlTable<valueType>
where valueType : forumAverage<valueType>
{
//这里是公共业务逻辑处理
}
/// <summary>
/// 使用《中国标准书号》各类图书的平均印数、平均印张和平均定价[全 国]
/// </summary>
public class average : forumAverage<average>
{
}
/// <summary>
/// 使用《中国标准书号》各类图书的平均印数、平均印张和平均定价[中央]
/// </summary>
public class centralAverage : forumAverage<centralAverage>
{
}
/// <summary>
/// 使用《中国标准书号》各类图书的平均印数、平均印张和平均定价[地方]
/// </summary>
public class localAverage : forumAverage<localAverage>
{
}
/// <summary>
/// 各类课本的平均印数、平均印张和平均定价
/// </summary>
public class average : forumAverage<average>
{
}
有人说DAL如何实现不重要,我只能说呵呵。因为从最基本的数据开始你就已经与面向对象背道而驰了,后面当然需要各种补坑了。当然有些人习惯了补坑,也就真的不重要了。 /// <summary>
/// 平均印数、平均印张和平均定价
/// </summary>
public abstract class average : year
{
/// <summary>
/// 每种印数(万册)
/// </summary>
public column.average3 Printing;
/// <summary>
/// 每册印张(印张)
/// </summary>
public column.average3 Sheet;
/// <summary>
/// 每册定价(元)
/// </summary>x
public column.average3 Price;
/// <summary>
/// 每印张定价(元)
/// </summary>
public column.average3 SheetPrice;
}
/// <summary>
/// 各类图书的平均印数、平均印张和平均定价
/// </summary>
[sqlTable(Connection = sqlTable.connection.PublishData, CacheType = typeof(fastCSharp.sql.cache.whole.identityArray<,>))]
public partial class forumAverage : average
{
/// <summary>
/// 版块
/// </summary>
[fastCSharp.setup.dataMember(MaxLength = 128)]
public string Forum;
}
/// <summary>
/// 各地区使用《中国标准书号》各类图书的平均印数、平均印张和平均定价[使用《标准书号》部分合计]
/// </summary>
[sqlTable(Connection = sqlTable.connection.PublishData, CacheType = typeof(fastCSharp.sql.cache.whole.identityArray<,>))]
public partial class areaAverage : dataModel.average
{
/// <summary>
/// 版块
/// </summary>
[fastCSharp.setup.dataMember(MaxLength = 128)]
public string Forum;
/// <summary>
/// 区域
/// </summary>
[fastCSharp.setup.dataMember(MaxLength = 32)]
public string Area;
}
/// <summary>
/// 新出+重印+租型 平均数
/// </summary>
[fastCSharp.setup.cSharp.sqlColumn]
public partial struct average3
{
/// <summary>
/// 新出
/// </summary>
public dataMember.average New;
/// <summary>
/// 重印
/// </summary>
public dataMember.average Reprint;
/// <summary>
/// 租型
/// </summary>
public dataMember.average ForRent;
}
/// <summary>
/// 平均值
/// </summary>
[fastCSharp.setup.dataMember(DataType = typeof(int?))]
public partial struct average
{
/// <summary>
/// 整数值
/// </summary>
[fastCSharp.setup.cSharp.json(IsIgnoreCurrent = true)]
private uint? value100;
/// <summary>
/// 是否为空值
/// </summary>
public bool IsNull
{
get { return value100 == null; }
}
/// <summary>
/// 两位小数
/// </summary>
public double Value
{
get { return (uint)value100 / 100.0; }
}
/// <summary>
/// 还原数值
/// </summary>
/// <param name="number">除数</param>
/// <returns></returns>
public double Div(double number)
{
return (uint)value100 / number;
}
public static implicit operator average(int? value) { return new average { value100 = value != null ? (uint?)(int)value : null }; }
public static implicit operator int?(average value) { return value.value100 != null ? (int?)(uint)value.value100 : null; }
}
可以看到,code frist方式的 存储结构定义层,不需要关心数据库,可以使用 继承/组合 等所有C#支持的面向对象技术来构建。
然后是基于表格的基本业务逻辑层,绑定表格的实现就是在这里,这里是一个model对于一张表并且继承自dbmodel,一个dbmodel可以对应多张表格。如果存在外围组件,可以在这里为业务组件模型供接口实现。比如 /// <summary>
/// 使用《中国标准书号》各类图书的平均印数、平均印张和平均定价[全 国]
/// </summary>
public class average : publishData.dataModel.forumAverage.sqlTable<average>
{
}
/// <summary>
/// 使用《中国标准书号》各类图书的平均印数、平均印张和平均定价[中央]
/// </summary>
public class centralAverage : publishData.dataModel.forumAverage.sqlTable<centralAverage>
{
}
/// <summary>
/// 使用《中国标准书号》各类图书的平均印数、平均印张和平均定价[地方]
/// </summary>
public class localAverage : publishData.dataModel.forumAverage.sqlTable<localAverage>
{
}
/// <summary>
/// 各类课本的平均印数、平均印张和平均定价
/// </summary>
public class average : publishData.dataModel.forumAverage.sqlTable<average>
{
}
如果没有基本业务逻辑,都是一些空壳,用于绑定表格名称。
那么XXX.sqlTable<T>是什么呢?它就是代码生成的DAL,继承自dbmodel public class sqlTable<valueType> : publishData.dataModel.forumAverage, fastCSharp.setup.cSharp.sqlTable.ISql<valueType, publishData.dataModel.forumAverage.memberMap>