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版]

  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抽取,调度计算处理,结果持久化

[NewLife.XCode]实体工厂(拦截处理实体操作)相关推荐

  1. [NewLife.XCode]实体类详解

    NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...

  2. [NewLife.XCode]实体列表缓存(最土的方法实现百万级性能)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  3. [NewLife.XCode]实体队列(多线程生产的大数据集中保存)

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  4. CAD教程:实体对象复制移动的操作教程

    我们在使用浩辰CAD制图软件绘制图纸的过程中,经常会用到复制功能,那么在复制过程中实体对象怎么复制移动呢? 下面给大家分享一下CAD软件中实体对象复制移动的CAD教程吧! CAD中实体对象复制移动的操 ...

  5. [NewLife.XCode]分表分库(百亿级大数据存储)

    NewLife.XCode是一个有15年历史的开源数据中间件,支持netcore/net45/net40,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量 ...

  6. [NewLife.XCode]百亿级性能

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  7. [NewLife.XCode]高级查询(化繁为简、分页提升性能)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  8. [NewLife.XCode]数据层缓存(网站性能翻10倍)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

  9. [NewLife.XCode]脏数据

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

最新文章

  1. 步步为营-55-js练习
  2. vue企业项目demo_基于SpringBoot和Vue的企业级中后台开源项目
  3. 汉密尔顿回路 (25 分)【思路讲解】
  4. python3文件的编码类型是什么_Python3编码类型有哪些?怎么转换?
  5. (转)CocosCreator零基础制作游戏《极限跳跃》二、制作游戏开始场景
  6. 大数据应用时代来袭 SaaS走向没落?
  7. 牛客网SQL篇刷题篇(1-2)
  8. php传递参数给asp.net,asp.net 传值总结
  9. IS-IS拓展功能补充(华为设备)
  10. Android ImageButton示例
  11. ubnt虚拟服务器端口转发,ubnt详细设置教程
  12. 关于抢火车票的那些事儿(一)
  13. 迅雷服务器有多少硬盘,迅雷真的比BT还伤硬盘吗?
  14. System.Drawing.Printing.InvalidPrinterException: 未安装打印机。
  15. 浅谈蚂蚁聚宝Android秒级编译
  16. python爬取去哪里_详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
  17. python 例子 银行_Python3实现简单的银行账户登录系统实例
  18. 【Arduino】mega2560 驱动grove 三色水墨屏
  19. 微软识花 android版 (非官方)
  20. JavaScript 伪数组和数组

热门文章

  1. 如何在计算机上阅读漫画书
  2. 痞子衡嵌入式:ARM Cortex-M内核那些事(2)- 第一款微控制器
  3. 计算机与操作系统基础小结
  4. 【神经网络】神经网络结构在命名实体识别(NER)中的应用
  5. 【Unity3D基础】让物体动起来②--UGUI鼠标点击逐帧移动
  6. nat+端口转发,使得宿主机secureCRT可以访问vbox里linux虚拟机
  7. C++的enum hack
  8. ABP vNext微服务架构详细教程——身份管理服务
  9. 快速理解ASP.NET Core的认证与授权
  10. 研发考核难的本质是因为这三个特点