现在的.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的实现原理及实现细则,最简化开发法的更多相关文章

  1. 移动端Web开发之我见

    Web比App简单? 前两天有人问手机上做网页简单还是做app简单,我真答不上来.很多人会不以为意的说当然是网页简单,但真的是这样吗? 放眼现在上线的手机网页,大多数都是平时pc的技术沿用过来的,鲜有 ...

  2. 【转】C++后台开发之我见

    工作也快两年了,偶然看到自己以前写过的一些技术博客,发现自己自毕业后一直没有更新过自己的技术博客,趁现在是刚过完春节快要回公司工作之际,谈谈我个人对后台开发的一些个人见解,希望能够对在校的学生或者刚刚 ...

  3. 转:从零开始开发一款Android App (from 简书)

    转: http://www.jianshu.com/p/a58d15ef5c8b

  4. 顶尖数据挖掘开发平台(TipDM-D2)产品白皮书

          顶尖数据挖掘开发平台 (TipDM-D2)           产  品  白  皮  书 广州泰迪智能科技有限公司 版权所有 地址: 广州市经济技术开发区科学城232号 网址: http ...

  5. 适合前端开发的 Chrome 扩展有哪些?(十款)

    适合前端开发的 Chrome 扩展有哪些?(十款) 一.总结 好的插件或者框架对程序员的意义重大. 二.适合前端开发的 Chrome 扩展有哪些?(十款) 掘金是一个高质量的技术社区,从 ECMASc ...

  6. 10 个免费的 C/C++ 集成开发环境

    集成开发环境(IDE)可以给程序员提供很大的帮助.大多数的IDE包含编译器和解释器.例如微软的 Visual Studio 本身内置的编译器和解释就是很好的例子,Eclipse 是另一个很好的例子.鼓 ...

  7. web开发资源导航

    实用工具 前端在线工具 兼容性速查 html5兼容性查询 node-es6支持度 es6兼容性表查询 设备es6支持度 游览器H5支持度 浏览器内核检测工具 手机设备信息检测 浏览器市场份额 文档手册 ...

  8. 自学前端开发,现在手握大厂offer,我的故事还在继续

    简要背景 我是一个非科班出身的程序员,而且是连续跨专业者,用一句话总结就是:16 届本科学完物流,保送研究生转交通,自学前端开发的休学创业者. 17 年休学创业,正式开始学习前端,离开创业公司后,我又 ...

  9. springboot实战开发全套教程,让开发像搭积木一样简单!Github星标已上10W+!

    前言 先说一下,这份教程在github上面星标已上10W,下面我会一一给大家举例出来全部内容,原链接后面我会发出来!首先我讲一下接下来我们会讲到的知识和技术,对比讲解了多种同类技术的使用手日区别,大家 ...

随机推荐

  1. 常见的Mule Esb下载地址

    http://www.myexception.cn/open-source/1832157.html

  2. css+div盒模型研究笔记

    红色标记的为默认值 1.border(边框):border-top,border-bottom,border-left,border-right 1.border-color(边框颜色): 2.bor ...

  3. J2SE 1.6 特性:java.lang.instrument

    1. import java.lang.instrument.Instrumentation; public class ObjectSizeFetcher { private static Inst ...

  4. Linux GDB调试全面解析

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序. 让被调试的程序在工程师指定的断 ...

  5. Mac废纸篓 不能完全清空的有效解决方法

    摘自:http://www.neonan.com/articles/5582 对于苹果用户来说, 可能都会遇到过这样的情况(尽管这种情况是不常出现的!), Mac OS X系统突然出现一些顽固的文件家 ...

  6. Linux就这个范儿 第11章 独霸网络的蜘蛛神功

    Linux就这个范儿 第11章  独霸网络的蜘蛛神功  第11章 应用层 (Application):网络服务与最终用户的一个接口.协议有:HTTP FTP TFTP SMTP SNMP DNS表示层 ...

  7. Android 关于ExpandableListView控件setOnChildClickListener无效问题

    其实很简单,在适配器里面重写isChildSelectable的时候返回值切记为true,这样才能使得二级监听有响应. 其次注意继承的是BaseExpandableListAdapter

  8. 浅谈负载均衡SLB、CLB和综合应用

    SLB     服务器负载均衡(Server Load Balancing),可以看作HSRP(热备份路由器协议)的扩展,实现多个服务器之间的负载均衡.     虚拟服务器代表的是多个真实服务器的群集 ...

  9. uwsgi + nigix + django的样式展示

    编辑添加黄色部分  是你的项目目录  在你的项目目录写的静态文件 内的样式调用的是static 如果不是 请改名 [root@ayibang-server s10day11]# vim /etc/ng ...

  10. Android大图片裁剪终极解决方案(上:原理分析)

    转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)  http://my.oschina.net/ryanhoo/blog/86842 约几个月前,我正 ...