[NewLife.XCode]数据初始化


NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。

整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代表作有百亿级大数据实时计算项目。

开源地址:https://github.com/NewLifeX/X (求star, 707+)

开发需要

一般应用系统部署都需要安装脚本,建立数据表以及导入基础数据,才能跑起来。

在XCode中,“建立数据表”这一步由包揽,再辅以一个“导入基础数据”的功能即可。

此外,系统在初步配置的过程中,经常可能出现需要清空某些表,然后重置到“出厂数据”的状态,例如魔方的菜单初始化。

系统开发日益灵活,客户需求也越来越高,纯粹的“基础数据Insert脚本”已经不能满足要求,逐渐出现能够希望根据上下文环境决定初始化数据的需求。

XCode数据初始化功能,由此而生!

数据初始化

在前面章节中提到,XCode生成的实体类,默认带有一个数据初始化模版,正是InitData方法。

XCode的初始化通过重载InitData方法实现,它将会在该实体类首次读写数据库之前执行。

尽管是异步执行,但主线程会阻塞3000ms等到数据初始化完成。因此,大部分实体类在首次使用的时候就有数据了。

Meta.Count用于判断该数据表中有没有数据,如果没有数据,才添加一些默认数据。

高级初始化

初始化不等于就一定是插入数据,还可以做一些数据整理工作。

譬如Membership里面的角色类

角色类每次启动时,除了要检查初始化四个基本角色外,还需要异步检查清理已经删除的菜单资源,确保角色数据足够“纯正”!

因此,所谓数据初始化,就是在所有数据库操作之前,执行一些用户自定义操作!

系列教程

NewLife.XCode教程系列[2019版]

  1. 。快速展现用法,代码配置连接字符串
  2. 。建立表格字段和索引,名字以及数据类型规范,推荐字段(时间,用户,IP)
  3. 。数据类业务类,泛型基类,接口
  4. 。连接字符串,调试开关,SQL日志,慢日志,参数化,执行超时。代码与配置文件设置,连接字符串局部设置
  5. 。自动建立数据库数据表
  6. 。InitData写入初始化数据
  7. 。重载拦截,自增字段,Valid验证,实体模型(时间,用户,IP)
  8. 。如何产生,怎么利用
  9. 。高并发统计
  10. 。单表和多表,不同连接,多种写法
  11. 。多表关联,Map映射
  12. 。复杂条件,分页,自定义扩展FieldItem,查总记录数,查汇总统计
  13. 。Sql缓存,更新机制
  14. 。全表整理缓存,更新机制
  15. 。字典缓存,适用用户等数据较多场景。
  16. 。字段精炼,索引完备,合理查询,充分利用缓存
  17. 。元数据,通用处理程序
  18. 。Membership
  19. 。Xml,Json,二进制,网络或文件
  20. 。常见拆分逻辑
  21. 。聚合统计,分组统计
  22. 。批量插入,批量Upsert,异步保存
  23. 。写入级缓存,提升性能。
  24. 。备份数据,恢复数据,同步数据
  25. 。提供RPC接口服务,远程执行查询,例如SQLite网络版
  26. 。ETL抽取,调度计算处理,结果持久化