简单好用的General开发框架
1、开篇概述
从2004年学习编程,2007年学习C#以来,做的多半都是跟数据库打交道的工作,所以也积累了很多数据库方面的知识,用过一些ORM框架,从了解掌握到自己实现,慢慢积累了很多代码,直到2010年的某天,想把之前和以后积累的一些代码、编程技巧之类的融合进一个C#的开发框架中去,于是这个开发框架就诞生了。起初叫过NetData,后来改名为General,取通用之意,因为自身编程水平不是很高,所以没有在这个框架之中糅合进一些高深的技术,都是一些技巧性的、避免重复劳动的代码,大概也就有些反射、设计模式的应用。还应当说明的是框架之中融进了一些从网上取到的代码,大部分都经过了本人的修改完善,已经成为了框架的一部分。
从General框架诞生之日起,我就一直将它应用到工作和业余项目,通过项目来完善功能、修改BUG,经过许多年的修改,目前BUG已经相对较少了。它主要是适用于一些中小型管理信息系统的搭建,特别是其中的数据库访问和ORM功能,都可以直接利用SQL语句来进行处理,大大降低了学习成本。一直以来我都将这个框架公开给同事们使用,也收到了很多好评,特别是它的简单方便,得到许多人的青睐,也根据同事们的意见做了非常多的修改,这次将它在这里开源,一是希望将自己的部分劳动成果给更多的人共享,共同学习提升,二是希望更多的人对它进行评价,以检验自己的编程水平。
和General框架同时共享的还有一个代码生成器,暂且就叫做General代码生成器吧,这个生成器比框架的创建更早,大概是在2008年初左右,刚开始在CSDN上提供过下载,但是由于那时候这个代码生成器还非常不完善,功能有限,所以没有起到太好的效果,目前这个代码生成器经过多年的改造,功能已初步完善,可以支持自定义模板的代码生成,比较好用,作为General框架的附带工具,一并共享出来,但目前代码生成器还不便公开源码。
2、General框架介绍
2.1框架的组成

打开解决方案可以看到,其实General框架的组成也不多,包括以下组件:
1)General.Common
通用资源部分,包含一些C#常用的辅助类库,如Config、Xml、String、加解密的帮助类
2)General.Data
数据库访问与ORM部分,接口类是DataManager
3)General.Extend
扩展资源部分,包含一些不常用和引用第三方的类库,如拼音生成、Pdf、Excel、Zip等
4)General.Web
Web开发辅助资源部分,主要为WebHelper类
5)General.WinForm
WinForm开发辅助资源部分,主要为FormHelper类
6)General.WinForm.ExControls
扩展控件资源
7)Sample.Market.Logic
示例项目的业务逻辑部分
8)Sample.Market.Model
示例项目的实体类部分
9)Sample.Market.WinForm
示例项目的WinForm界面
从以上的介绍可以看到,General框架不光包含数据库访问与ORM,还包括很多常用的开发辅助类,主要是为了简化C#程序开发而设计。其中General.Data,即数据库访问与ORM部分会有一篇详细的说明在源码中包含。
2.2数据库访问与ORM
使用General框架进行数据库开发是非常方便的,主要体现在:
1)配置简单,通过在App.config或Web.config加入两行配置或是一行代码就可以完成配置;
2)支持多数据库,目前General框架支持的数据库有:Access、Sqlite、SqlServer、Oracle、MySql几种;
3)统一访问接口,所有的数据库访问都可以通过DataManager一个类来进行,并且DataManager提供了一个名为Default的默认实例来方便使用;
4)使用特性或Xml文件两种方式进行数据库映射,特别是使用特性的方式,结合代码生成器可以非常快速的生成完所有的实体类文件;
5)丰富的方法支持,不仅支持原生SQL操作,还提供丰富的ORM方法,并且ORM结合SQL语句使用,更为灵活;
6)多种参数化支持方案,即可以通过动态参数、字典参数还可以通过链式编程进行参数化;
7)方便的事务支持;
8)主键生成支持;
9)数据库结构访问支持。
2.3 ORM使用举例
下面以一个简单的例子来了解General框架ORM部分的使用方法
1)配置
在App.config或Web.config中加入数据库类型和默认连接字符串的配置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!--加入默认数据库类型-->
<add key="DatabaseType" value="SqlServer2005"/>
</appSettings>
<connectionStrings>
<!--加入默认连接字符串-->
<add name="Default" connectionString="Data Source=(local);Database=Market;Persist Security Info=True;User ID=sa;Password="/>
</connectionStrings>
</configuration>
在程序初始化部分加入以下代码
DataManager.SetDefaultConnectionByConfig();
2)生成实体类代码
打开General代码生成器,批量生成所有的实体类文件到项目中

3)进行ORM操作
在界面上加入一个表格控件,并在后台代码中加入查询并绑定实体列表到表格控件的代码。
exDataGridView1.DataSource = DataManager.Default.FindList<Goods>();
4)运行程序

2.4 Web和WinForm界面开发支持
在界面开发上,以前经常会有大量的控件取值赋值操作,如实体保存前,将控件值赋值给实体属性,如:
Customer cust = new Customer();
cust.类型 = cb_lx.SelectedValue;
cust.供货商 = txt_ghs.Text;
cust.联系人 = txt_lxr.Text;
cust.电话 = txt_dh.Text;
cust.手机 = txt_sj.Text;
cust.邮箱 = txt_yx.Text;
cust.地址 = txt_dz.Text;
cust.QQ = txt_qq.Text;
DataManager.Default.Save(cust);
而使用General框架,只要将控件ID命名为与实体属性相同的名称,然后使用WebHelper或FormHelper的CollectAndFill方法即可自动完成控件到属性的赋值工作,如:
Customer cust = new Customer();
FormHelper.CollectAndFill(this, cust);
DataManager.Default.Save(cust);
2.5其他功能
General框架更详细介绍会在以后慢慢完成,下面提供General框架源码和代码生成器的下载。
简单好用的General开发框架的更多相关文章
- Crumpet – 使用很简单的响应式前端开发框架
Crumpet 是一个简单的响应式的基于 SASS/SCSS 的响应式前端框架,保持你的 HTML 代码简洁.内置尽量使用占位符选择器,以减少你的 HTML 标记的大小,没有凌乱的 HTML 代码.快 ...
- 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架 - LinFx
LinFx 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架,遵循领域驱动设计(DDD)规范约束,提供实现事件驱动.事件回溯.响应式等特性的基础设施.让开发者享受到正真意义的面向对象 ...
- Bootstrap非常简单实用的web前端开发框架
今天无意间用firebug看网站的代码发现了Bootstrap,之前从来没有听说过这个东东,于是对它产生了好奇感,通过百度我了解到了Bootstrap是一款非常简单,强悍,实用,移动设备端优先使用的这 ...
- 值得推荐的android开发框架简单介绍
一些总结出来的Android高速开发框架,所有都是开源框架,附带项目地址,是开发学习的绝佳资料. Direct-Load-apk项目 项目主页地址:http://www.kymjs.com/ 功能:D ...
- Android 快速开发框架:推荐10个框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、dhroid..
对于Android初学者以及对于我们菜鸟,这些大神们开发的轻量级框架非常有用(更别说开源的了). 下面转载这10个框架的介绍:(按顺序来吧没有什么排名). 一. Afinal 官方介绍: Afina ...
- PHP开发框架[流行度排名]
在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上.Sitepoint网站做了一个小的调查,结果显示最流行的PHP框架前三甲为:Laravel.Phalc ...
- PHP开发框架比较
PHP开发框架比较 Laravel 是一个简单优雅的 PHP WEB 开发框架,将你从意大利面条式的代码中解放出来.通过简单.优雅.表达式语法开发出很棒的 WEB应用!但是通过使用我们发现Larave ...
- (转)第一次发博客-说说我的B/S开发框架(asp.net mvc + web api + easyui)
原文地址:http://www.cnblogs.com/xqin/archive/2013/05/29/3105291.html 前言 这些年一直在.net下做企业web系统开发,前前后后经历的不同的 ...
- Android中有哪些好的开发框架?
在安卓开发中,框架的使用必不可少,合理利用一些好的开发框架,往往可以达到事半功倍的效果.本文小编就将和大家分享安卓开发者不得不知的5款框架,一起来看看吧,新技能get走起~~ 1.thinkAndro ...
随机推荐
- 26 python 并发编程之多进程理论
一 什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 举例(单核+多道,实现多个进程的并发执行): egon在一个时间段内有很多任务要做:python备课的任务,写书的任 ...
- java学习笔记 --- 多线程(线程安全问题——同步代码块)
1.导致出现安全问题的原因: A:是否是多线程环境 B:是否有共享数据 C:是否有多条语句操作共享数据 2.解决线程安全问题方法: 同步代码块: synchronized(对象){ 需要同步的代码; ...
- java学习笔记 --- IO流小结
IO流 |--字节流 |--字节输入流 InputStream int read():一次读取一个字节 int read(byte[] bys):一次读取一个字节数 ...
- winform使用相对路径读取文件的方法
获取exe文件的路径进行截取,分两次进行,然后拼接文件名,形成全路径 代码如下: string haarXmlPath = @"haarcascade_frontalface_alt_tre ...
- Django 框架概况
Django 里更关注的是模型(Model).模板(Template)和视图(Views),称为 MTV模式: M 代表模型(Model),即数据存取层. 该层处理与数据相关的所有事务:如何存取.如何 ...
- Android 关于后台杀死App之后改变服务器状态的一些尝试
前言: 如题,我的需求是:我需要在App在后台运行(未退出),调出最近运行记录,杀死App服务时,程序能够向服务器发送一条指令,以此达到我想要的目的. Android方面刚刚才开始玩,我一开始想的是可 ...
- THUPC2017 小 L 的计算题
求 $k=1,2,\cdots,n \space \space \sum\limits_{i=1}^n a_i^k$ $n \leq 2 \times 10^5$ sol: 时隔多年终于卡过去了 之前 ...
- HttpContext是干什么的
这是MSDN对HttpContext的说明: HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息. (网上说是上下文信息,啥又叫上下文呢?个人感觉说的不 ...
- Springboot正常启动,但是访问404报错
原因: 查看是否配置文件中有以下配置: server.context-path=/hellopath 我这里是以/hellopath为例,如果有该配置的话,只能通过该路径访问到. 其他原因
- jenkins jacoco
1.pom中加jacoco依赖 <dependency> <groupId>org.jacoco</groupId> <artifactId>jacoc ...