.net开发之我见,or实现 最简 优化法。knock out type convert 与我之简化orm的实现原理及实现细则,最简化开发法
现在的.net or构架,大家认同的各种大大小小,ef,subsonic,nhibernate,甚至小一些的petapoco这种,但用过的人我想他们考虑的是比较多。
小一些的Petapoco也有几千行的代码。
而有一些或是配置困难,或是脱离不了一些sql,
而我一直在寻找一种更简便的方法简化自己的开发,使自己更容易的操作数据。
由于最近在用mysql,而mysql使用myism引擎和innodb引擎时,由于Innodb引擎支持更广泛些,事务等,虽然在字符索引上可能较myism差些,不过用是必须可以的。
自己就着手写了一个小型的or类型。
具体的实现思想是 Knock out converter.
上一篇中,我个人认为软件OO的思想在于最小化输入配置,而最优化OO方法的精简与重构。
大家都知道在开发中,接收到数据往往是string类型的,若用webservice,wcf,remoting等远端接口,远程调用的方法自然直接是实体,但在与数据库的协作时往往需要将MODEL的类型在parameter 中指定为数据库对应的类型,.net framework其实是有一个infertype的,也就是在操作数据的时候,不指定数据库类型,只是添加prametername 与value,那么,在操作库时,就可以直接进行操作了,而将数据类型的验证放到了库的操作上下文中,也就省掉了程序上类型上的麻烦,当然这是一个取巧的方法,但是这种方法却是最简单明了和易于操作的。
这也是我自己写的or工具中的核心部分。
思想仍旧是 “约定大于配置”,假定表中默认含有id主键,自动增长,单表名与实体名小写相对,那么,我们就可以根据这些约定构造出相应的库表操作语句。
而对于sql注入方面,大家都知道parameter往往是对参数进行重新编码 可以一定程度上防注入,那么,这样我们也可以构造出对应的SQLPARAMETER,通过工厂和抽象的sqlhelper,将具体的sqlhelper注入到操作类中实现各种库的统一操作。这样就可以实现一个单表的Orm.
而对于字符长度等等可以按ef,subsonic的实现,添加特性,限定字符长度,设定主键列,如果没有keycolumn,则采用默认约定用id列
我个人认为,若是在实体中添加上字符长度,数据类型和regular expression等的验证,就可以实体直接的sql直接生成,那么这样就可以实现code first,但 db first往往是我们更多用的方式,所以,扩展上可以那么实现,而且原理就是这个了,orm也基本这么个思想。
.net开发之我见,or实现 最简 优化法。knock out type convert 与我之简化orm的实现原理及实现细则,最简化开发法的更多相关文章
- 移动端Web开发之我见
Web比App简单? 前两天有人问手机上做网页简单还是做app简单,我真答不上来.很多人会不以为意的说当然是网页简单,但真的是这样吗? 放眼现在上线的手机网页,大多数都是平时pc的技术沿用过来的,鲜有 ...
- 【转】C++后台开发之我见
工作也快两年了,偶然看到自己以前写过的一些技术博客,发现自己自毕业后一直没有更新过自己的技术博客,趁现在是刚过完春节快要回公司工作之际,谈谈我个人对后台开发的一些个人见解,希望能够对在校的学生或者刚刚 ...
- 转:从零开始开发一款Android App (from 简书)
转: http://www.jianshu.com/p/a58d15ef5c8b
- 顶尖数据挖掘开发平台(TipDM-D2)产品白皮书
顶尖数据挖掘开发平台 (TipDM-D2) 产 品 白 皮 书 广州泰迪智能科技有限公司 版权所有 地址: 广州市经济技术开发区科学城232号 网址: http ...
- 适合前端开发的 Chrome 扩展有哪些?(十款)
适合前端开发的 Chrome 扩展有哪些?(十款) 一.总结 好的插件或者框架对程序员的意义重大. 二.适合前端开发的 Chrome 扩展有哪些?(十款) 掘金是一个高质量的技术社区,从 ECMASc ...
- 10 个免费的 C/C++ 集成开发环境
集成开发环境(IDE)可以给程序员提供很大的帮助.大多数的IDE包含编译器和解释器.例如微软的 Visual Studio 本身内置的编译器和解释就是很好的例子,Eclipse 是另一个很好的例子.鼓 ...
- web开发资源导航
实用工具 前端在线工具 兼容性速查 html5兼容性查询 node-es6支持度 es6兼容性表查询 设备es6支持度 游览器H5支持度 浏览器内核检测工具 手机设备信息检测 浏览器市场份额 文档手册 ...
- 自学前端开发,现在手握大厂offer,我的故事还在继续
简要背景 我是一个非科班出身的程序员,而且是连续跨专业者,用一句话总结就是:16 届本科学完物流,保送研究生转交通,自学前端开发的休学创业者. 17 年休学创业,正式开始学习前端,离开创业公司后,我又 ...
- springboot实战开发全套教程,让开发像搭积木一样简单!Github星标已上10W+!
前言 先说一下,这份教程在github上面星标已上10W,下面我会一一给大家举例出来全部内容,原链接后面我会发出来!首先我讲一下接下来我们会讲到的知识和技术,对比讲解了多种同类技术的使用手日区别,大家 ...
随机推荐
- Mongo命令行中执行CRUD
在命令行中使用mongo自带的shell命令来执行CRUD操作 首先链接到数据库 增 db.qiao.insert({"qq":1}) db.qiao.save({"qq ...
- html代码转义到js时,往往会遇到问题,这代码实现html和js互转
这段代码是直接可以用的,大家不妨试试.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- 兼容加载Xml字符串
var _loadXML = function(xmlString){ var xmlDoc=null; //支持IE浏览器 if(!window.DOMParser && windo ...
- background:transparent的作用
background的属性值 background : background-color | background-image | background-repeat | background-att ...
- 算法训练 Hankson的趣味题
算法训练 Hankson的趣味题 时间限制:1.0s 内存限制:64.0MB 问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Han ...
- qt QString 与 int,char的转换
每次QString转换int或者char的时候都要查资料,记录一下,方便下次查看. 参考: http://blog.csdn.net/ei__nino/article/details/7297791 ...
- JAVA并发编程的艺术目录
第7章:JAVA中的13个原子操作类 第8章:JAVA中的并发工具类 第9章:JAVA中的线程池
- css中的盒子模型
css中的盒子模型 css中的盒子模型,有两种,一种是“标准 W3C 盒子模型”,另外一种是IE盒子模型. 1.w3c盒子模型 从图中可以看出:w3c盒子模型的范围包括了:margin,borde ...
- json对象与json字符串互换
json字符串转json对象:jQuery.parseJSON(jsonStr); / var jsonObj= eval('(' + str + ...
- Python-S13-day2-之购物车
Python-S13-day2 需求: 1.写一个购物小程序,用户开始先输入自己的工资,然后可以不断的买东西并加入购物车,如果钱不够了提示余额不足,用户中途可以选择查看自己购物车里面的商品,以及余额, ...