[NewLife.XCode]实体工厂(拦截处理实体操作)
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。
整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代表作有百亿级大数据实时计算项目。
开源地址:https://github.com/NewLifeX/X (求star, 795+)
如果说前面16篇讲的都是XCode的ORM功能,从这一篇开始,将超越ORM之外,从另一个角度讲解一个数据中间件!
回到目录
实体接口
有心的同学可以发现,每一个实体类都有实现一个IEntity接口,这就是实体接口。
实体接口IEntity,抽象实体对象的添删改存操作,支持访问脏数据和扩展属性!
日复一日的写添删改查,上进的同学会想,能不能把许多类似的操作给封装为通用函数?
这是对IEntity接口的扩展方法,新增时设置CreateTime,每次设置UpdateTime,然后Save保存。
IEntity支持通过名称读写字段属性(《脏数据》中有提到实体属性赋值的三种方法),支持脏数据和添删改,可以无需反射而实现各种封装。
IEntity主要构成:
添删改存。Insert/Update/Delete/Save/SaveAsync
取值赋值。this[name]/SetItem/CloneEntity/CopyFrom
脏数据。Dirtys/HasDirty/IsDirty(name)
扩展属性。Extends
回到目录
实体工厂
实体工厂接口IEntityOperate,抽象提供实体类的元数据、查询、事务、设置!
实体类的各种元数据一般可以通过内嵌静态类Meta访问,也可以通过实体工厂接口IEntityOperate访问,以便于设计各种灵活功能。
实体工厂接口IEntityOperate主要构成:
字段属性信息 Fields/AllFields/FieldNames。最常用,访问到所有数据属性的信息
数据表 Table。提供实体类和数据表相关信息
唯一主键 Unique。XCode强烈推荐使用唯一主键,因为许多特色功能要求有唯一主键才能支持
实体会话 Session。提供数据库查询与执行的直接操作
分表分库 TableName/ConnName。接口访问跟Meta.TableName/Meta.ConnName一样,可通过对其赋值改变当前线程下使用的表名和连接名,从而实现分表分库功能
缓存 Cache/SingleCache/Count。实体缓存、对象缓存、总记录数
查询数据 Find/FindByKey/FindAll/FindCount
事务 BeginTransaction/Commit/Rollback
场景一:从Http请求中读取数据并填充到实体属性
场景二:多个实体类要做修改日志,重载Insert/Update/Delete后调用以下方法,把实体对象中被修改(IsDirty有脏数据)的字段和数值拼成字符串写入日志表
回到目录
总结
XCode是一个开放性的数据中间件,为各公司团队打造自己的开发平台提供鼎力支持!
在这十多年的发展中,几乎所有使用XCode的公司团队,都根据团队情况和业务需要封装了自己的快速开发平台!
回到目录
系列教程
NewLife.XCode教程系列[2019版]
增删改查入门。快速展现用法,代码配置连接字符串
数据模型文件。建立表格字段和索引,名字以及数据类型规范,推荐字段(时间,用户,IP)
实体类详解。数据类业务类,泛型基类,接口
功能设置。连接字符串,调试开关,SQL日志,慢日志,参数化,执行超时。代码与配置文件设置,连接字符串局部设置
反向工程。自动建立数据库数据表
数据初始化。InitData写入初始化数据
高级增删改。重载拦截,自增字段,Valid验证,实体模型(时间,用户,IP)
脏数据。如何产生,怎么利用
增量累加。高并发统计
事务处理。单表和多表,不同连接,多种写法
扩展属性。多表关联,Map映射
高级查询。复杂条件,分页,自定义扩展FieldItem,查总记录数,查汇总统计
数据层缓存。Sql缓存,更新机制
实体缓存。全表整理缓存,更新机制
对象缓存。字典缓存,适用用户等数据较多场景。
百亿级性能。字段精炼,索引完备,合理查询,充分利用缓存
实体工厂。元数据,通用处理程序
角色权限。Membership
导入导出。Xml,Json,二进制,网络或文件
分表分库。常见拆分逻辑
高级统计。聚合统计,分组统计
批量写入。批量插入,批量Upsert,异步保存
实体队列。写入级缓存,提升性能。
备份同步。备份数据,恢复数据,同步数据
数据服务。提供RPC接口服务,远程执行查询,例如SQLite网络版
大数据分析。ETL抽取,调度计算处理,结果持久化
[NewLife.XCode]实体工厂(拦截处理实体操作)相关推荐
- [NewLife.XCode]实体类详解
NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...
- [NewLife.XCode]实体列表缓存(最土的方法实现百万级性能)
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...
- [NewLife.XCode]实体队列(多线程生产的大数据集中保存)
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- CAD教程:实体对象复制移动的操作教程
我们在使用浩辰CAD制图软件绘制图纸的过程中,经常会用到复制功能,那么在复制过程中实体对象怎么复制移动呢? 下面给大家分享一下CAD软件中实体对象复制移动的CAD教程吧! CAD中实体对象复制移动的操 ...
- [NewLife.XCode]分表分库(百亿级大数据存储)
NewLife.XCode是一个有15年历史的开源数据中间件,支持netcore/net45/net40,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量 ...
- [NewLife.XCode]百亿级性能
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...
- [NewLife.XCode]高级查询(化繁为简、分页提升性能)
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...
- [NewLife.XCode]数据层缓存(网站性能翻10倍)
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...
- [NewLife.XCode]脏数据
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...
最新文章
- 步步为营-55-js练习
- vue企业项目demo_基于SpringBoot和Vue的企业级中后台开源项目
- 汉密尔顿回路 (25 分)【思路讲解】
- python3文件的编码类型是什么_Python3编码类型有哪些?怎么转换?
- (转)CocosCreator零基础制作游戏《极限跳跃》二、制作游戏开始场景
- 大数据应用时代来袭 SaaS走向没落?
- 牛客网SQL篇刷题篇(1-2)
- php传递参数给asp.net,asp.net 传值总结
- IS-IS拓展功能补充(华为设备)
- Android ImageButton示例
- ubnt虚拟服务器端口转发,ubnt详细设置教程
- 关于抢火车票的那些事儿(一)
- 迅雷服务器有多少硬盘,迅雷真的比BT还伤硬盘吗?
- System.Drawing.Printing.InvalidPrinterException: 未安装打印机。
- 浅谈蚂蚁聚宝Android秒级编译
- python爬取去哪里_详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
- python 例子 银行_Python3实现简单的银行账户登录系统实例
- 【Arduino】mega2560 驱动grove 三色水墨屏
- 微软识花 android版 (非官方)
- JavaScript 伪数组和数组