表管理

HiSql 提供表创建的功能,也可以在底层数据库中创建,HiSql还有一个数据库管理工具的产品可以实现跨不同的数据库进行表创建

通过该类可以在HiSql支持的数据库中创建相同的表

通过实体类创建表

我们可以创建一下实体类

[System.Serializable]
[HiTable(IsEdit = true, TabName = "HTest01")]
public class HTest01 : StandField
{
    [HiColumn(FieldDesc = "编号", IsPrimary = true,    IsBllKey = true,  FieldType =HiType.INT, SortNum = 1, IsSys = false, DBDefault = HiTypeDBDefault.EMPTY)]
    public int SID
    {
        get; set;
    }
    [HiColumn(FieldDesc = "姓名", FieldType = HiType.NVARCHAR,FieldLen =50,  IsNull = false, SortNum = 2,  DBDefault = HiTypeDBDefault.EMPTY)]
    public string UName
    {
        get; set;
    }

    [HiColumn(FieldDesc = "年龄", FieldType = HiType.INT, IsNull = false, SortNum = 3, IsSys = true, DBDefault = HiTypeDBDefault.EMPTY)]
    public int Age
    {
        get; set;
    }

    [HiColumn(FieldDesc = "薪水", FieldType = HiType.DECIMAL,FieldDec =2, FieldLen =18,  IsNull = false, SortNum = 4, DBDefault = HiTypeDBDefault.EMPTY)]
    public int Salary
    {
        get; set;
    }
    [HiColumn(FieldDesc = "描述编号", FieldType = HiType.NVARCHAR, FieldLen = 100, IsNull = false, SortNum = 5, IsSys = true, DBDefault = HiTypeDBDefault.EMPTY)]
    public string Descript
    {
        get; set;
    }

}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

HiTable属性标识

   [HiTable(TabName ="HiTable",TabReName ="测试表")]

1
2
属性描述
TabName在数据库右创建的表名
TabDescript表的描述
IsLog是否开始日志
LogTable日志记录表
LogExprireDay日志保留天数
......

在某些业务场景中如果有些表 如果做变更(删除,新增,修改)需要记录一下个性日志那么可以开启该配置,开启后对该表操作的变更操作都会产生一个日志凭证,可以根据该作证进行撤回等操作

还有一些示属性预留未放开出来,后期会出具体详细的文档

为什么要继承StandField 类

HiSql建议每位开发都在进行表设计的时候都要加上以下字段,这样对表数据的创建修改都有一个时间记录,可以当作该记录的版本号用于数据

  1. 创建时间
  2. 创建人
  3. 修改时间
  4. 修改人

继承该类后默认会在表中增加以下字段,当然也可以自己在数据底创建以下字段名称的字段HiSql同样可以识别进行自动进行更新操作

字段描述
CreateTime创建时间
CreateName创建人
ModiTime修改时间
ModiName修改人

创建表

//将实体类转成表结构描述信息
sqlClient.CodeFirst.CreateTable(typeof(HTest01 ));
1
2

通过以上语句就可以在当前数据库创建表HTest01,同时也会向Hi_TabModel,Hi_FieldModel 中插入该表的结构信息,并会缓存处理下次HiSql要用到时直接从缓存获取

如果在业务开发中需要动态的创建表那么也可以这样写

TabInfo tabInfo = new TabInfo();
            tabInfo.TabModel = new HiTable() {... };//自定义表信息
            tabInfo.Columns = new List<HiColumn> {... };//自定义添加列
            sqlClient.CodeFirst.CreateTable(tabInfo);
1
2
3
4

通过配置文件创建

提示

即将更新

通过HiSql Gui工具创建

提示

即将更新

删除表

如果在业务场景中某一张表不需要了那么可以用以下方式可以操作删除

提示

表删除是于高风险操作请谨慎!!!

///表示删除表 H_Test
sqlClient.CodeFirst.DropTable("H_Test");
1
2

如果要快速删除表且不需要在数据库底层留下痕迹请使用以下方式

///表示删除表 H_Test
sqlClient.CodeFirst.DropTable("H_Test",true);
1
2

清空表数据

清空表数据将不会留下痕迹 请谨慎操作,如果在留痕迹请用Delete删除

///表示删除表 H_Test中所有数据
sqlClient.CodeFirst.Truncate("H_Test");
1
2

提示

以上关于表的操作都属于高风险操作,请谨慎操作!