您现在的位置是: 首页 > InkFx 技术 > InkFx.ORM(跨数据库)

『2011』Forever.Data & Forever.Source 第一个ORM框架
ShuXiaolong 2016-12-03 73人围观
7 条评论
简介 2011年初,
作者 最后一版 代码生成器 WebCreate 2.5 正在编写中。
在 代码生成器 的 编写过程中,有一个孪生 项目 SqlForever 2.0 获取数据库结构。

而 代码生成器 有一个 “高级模板”(在今天看来不怎么高级): Forever.Data 完全站点。
而为了完成这个 “高级模板”,作者 耗时2天,写成了 自己的 第一个 ORM框架:Forever.Data。

    2011年初,

    作者 最后一版 代码生成器 WebCreate 2.5 正在编写中。

    在 代码生成器 的 编写过程中,有一个孪生 项目 SqlForever 2.0 获取数据库结构。

     

    而 代码生成器 有一个 “高级模板”(在今天看来不怎么高级): Forever.Data 完全站点。

    而为了完成这个 “高级模板”,作者 耗时2天,写成了 自己的 第一个 ORM框架:Forever.Data。

    再后来,Forever.Data 框架 升级为 Forever.Source。

     

     

     

     

    Forever.Data 框架,具体完成日期是: 2011-1-29  2:05,代码 1500行,耗时 2天(累计 8小时)

    如果没有记错,那时候自己在 广东江门出差,那段时间 持续 4个月 每天都是 凌晨4点睡。

    我不敢说 自己很拼命,事实上 当初拼命的很多东西 看似都没啥价值。

     

     

    如果非得 说价值:

    > 长期练手,将自己的 项目直觉、敏捷能力 提升了好几个数量级。

    > 今时今日,我如果想写一个框架:从技术储备、到代码完成,5天时间 就足够(比如:InkFx.Office2007 从学习OpenXml 到框架完成 仅用了 3天,2400行代码)。

    > 今时今日,当我发现 项目中的 某些代码有规律可言时。我1天时间 就能 手写一个代码生成器 —— 生成代码 稳定、整齐、干净。

     

     

    但是:

    > 我把自己的 敏捷练到最高,我能在最短时间 实现技术预期 —— 指哪打哪。

    > 但又能如何??!!

    > —— 我却依然看不到自己40岁的命运。

    > —— 我依然没能跑赢时间,本来 最好2012、最迟2014 回武汉,结果我2016才回到武汉。

    > —— 我喜欢十几年的姑娘,还没等我 正式追求,就已经不属于我。

     

    剧本清盘:

    > 年轻的时候如此拼命,想尽早成功,只为了 能尽快回到她的身边。

    > 我每天叠一只 千纸鹤,想 叠到999只时 正式开始追她。

    > 但又能如何??!!

    > 2016-03-17 的凌晨,当 剧本已经标志着 清盘时,我自己心态的大起大落,我自己心里清楚。

    > 我用 美工刀 在 自己左手无名指 划开一道口子 —— 算是仪式,正式放弃。

    > 我甚至能感受到 自己偏执的灵魂 —— 但我必须装作 若无其事,必须恢复 心态坦然。

    > 因为我知道:一旦让她觉察到 自己的偏执 —— 我怕她会害怕,我怕她会对我产生恐惧。

    > 其实,我要感谢 她 —— 是她让我成为了更好的自己 —— 是她给了我一个 最美的剧本。

     

     

    说了一堆题外话,如果 看客看到 以上这段文字,都别太当回事。

     

     

    Forever.Data 版本轨迹:

    Forever.Data,Forever.Source,Beetle.Source,Laura.Source,InkFx.ORM 跨数据库ORM框架 版本变迁 2011        Forever.Data(第一个ORM框架)  2011        Forever.Source(Forever.Data升级版)  2012        Beetle.Source(ORM框架设计思路大改)  2013        Laura.Source(ORM框架大量精简优化)  2015        InkFx.ORM(新增 数据库迁移工具、实体工具)

     

     

    Forever.Data 项目介绍:

     

    在线开源地址:http://www.ink1989.com/Source/F1B7802F83074B128C46E02E30C667C5

     

    事实上 Forever.Data 我自己都不知道 怎么使用了(因为一个月后 这个框架 就被升级成了 Forever.Source),如果 记忆没错的话:

    > Forever.Data 的实体,是 继承基类的。所有 字段值 都保存在 基类Hash字典中。

    > Forever.Data 的所有 增删改查 操作函数,是在 实体基类 中(而 NH,EF 的 操作函数 都在 Context 类中)。

    > Forever.Data 采用的是 实体模拟查询(比如:我先new 一个实体,设置 字段 Age=18,这个实体 就能把 和自己类似的 实体全部查出来)。

     

     

    当初的测试代码 已经找不到了,手写一段 测试代码:

     

     

    TestModel  model = new TestModel();
    model.Position = EntityPosition.Reference; //表示当前对象是一个效仿,一般作为查询参数的对象 需要是此枚举属性
    model.Age = 18;  //那 模糊查询 该如何赋值? //Forever.Data 理论上不支持 模糊查询,所以才 升级为 Forever.Source
    List listModel = model.GetList(false); //查询出 Age=18 的所有实体

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

第一时间获取智能手机行业新鲜资讯和商业动态,可以访问站长的微博「InkFx」, 如果需要站长陪聊也可以在微信里添加好友,搜索「Shu_Xiaolong」, 还可以通过加入QQ群:「C#实验室」,和网友一起交流技术、共同进步。

文章评论

图文推荐

InkFx博客 有部分文章来源于互联网,版权归属于原作者。本站所有转载文章言论不代表本站观点。
如是侵犯了原作者的权利,请发邮件联系站长(514286339@qq.com),站长收到后立即删除。