.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,下面我会一一给大家举例出来全部内容,原链接后面我会发出来!首先我讲一下接下来我们会讲到的知识和技术,对比讲解了多种同类技术的使用手日区别,大家 ...
随机推荐
- h5在线状态监测
一个属性,2个事件 navigator.onLine 表示当前浏览器的的在线状态. window.addEventListener("online", function(){}); ...
- svn截图
一.合并一个范围的版本 此类型应用最为广泛,主要是把分支中的修改合并到主干上来.在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本.合并的源URL填写的是要合并的分支的URL,待合 ...
- 在serviceImpl里使用自身的方法
@Service("tbLeaveRegisterService")@Transactionalpublic class TbLeaveRegisterServiceImpl ex ...
- mongodb 常用命令
转自http://www.blogjava.net/waterjava/archive/2011/03/23/346819.html 命令行 --help 显示命令行参数 --nodb 不连接数据库方 ...
- ADO.NET连接到数据库(oracle)
本文摘抄于http://www.cnblogs.com/luluping/archive/2009/10/13/1582737.html,如有侵权,请联系博主. OracleConnection 对象 ...
- php---JSON和JSONP
JSON和JSONP (含jQuery实例)(share) 来源:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jque ...
- .NET对象与Windows句柄(二):句柄分类和.NET句柄泄露的例子
上一篇文章介绍了句柄的基本概念,也描述了C#中创建文件句柄的过程.我们已经知道句柄代表Windows内部对象,文件对象就是其中一种,但显然系统中还有更多其它类型的对象.本文将简单介绍Windows对象 ...
- background:transparent的作用
background的属性值 background : background-color | background-image | background-repeat | background-att ...
- 实战案例:DIV嵌套
缘于页面结构语义化的考虑,我们应该慎用div和span这两个通用元素,只有当划分页面结构模块时才使用div元素,因为模块本身是没有任何语义的,他仅代表一块独立的结构.如果想对段落内部分内联元素或文本应 ...
- 给Windows机器创建软连接
给Windows机器创建软连接 http://blog.csdn.net/w6611415/article/details/32084677