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框架源码下载

General框架示例程序的数据库

General代码生成器

简单好用的General开发框架的更多相关文章

  1. Crumpet – 使用很简单的响应式前端开发框架

    Crumpet 是一个简单的响应式的基于 SASS/SCSS 的响应式前端框架,保持你的 HTML 代码简洁.内置尽量使用占位符选择器,以减少你的 HTML 标记的大小,没有凌乱的 HTML 代码.快 ...

  2. 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架 - LinFx

    LinFx 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架,遵循领域驱动设计(DDD)规范约束,提供实现事件驱动.事件回溯.响应式等特性的基础设施.让开发者享受到正真意义的面向对象 ...

  3. Bootstrap非常简单实用的web前端开发框架

    今天无意间用firebug看网站的代码发现了Bootstrap,之前从来没有听说过这个东东,于是对它产生了好奇感,通过百度我了解到了Bootstrap是一款非常简单,强悍,实用,移动设备端优先使用的这 ...

  4. 值得推荐的android开发框架简单介绍

    一些总结出来的Android高速开发框架,所有都是开源框架,附带项目地址,是开发学习的绝佳资料. Direct-Load-apk项目 项目主页地址:http://www.kymjs.com/ 功能:D ...

  5. Android 快速开发框架:推荐10个框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、dhroid..

    对于Android初学者以及对于我们菜鸟,这些大神们开发的轻量级框架非常有用(更别说开源的了). 下面转载这10个框架的介绍:(按顺序来吧没有什么排名). 一.  Afinal 官方介绍: Afina ...

  6. PHP开发框架[流行度排名]

    在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上.Sitepoint网站做了一个小的调查,结果显示最流行的PHP框架前三甲为:Laravel.Phalc ...

  7. PHP开发框架比较

    PHP开发框架比较 Laravel 是一个简单优雅的 PHP WEB 开发框架,将你从意大利面条式的代码中解放出来.通过简单.优雅.表达式语法开发出很棒的 WEB应用!但是通过使用我们发现Larave ...

  8. (转)第一次发博客-说说我的B/S开发框架(asp.net mvc + web api + easyui)

    原文地址:http://www.cnblogs.com/xqin/archive/2013/05/29/3105291.html 前言 这些年一直在.net下做企业web系统开发,前前后后经历的不同的 ...

  9. Android中有哪些好的开发框架?

    在安卓开发中,框架的使用必不可少,合理利用一些好的开发框架,往往可以达到事半功倍的效果.本文小编就将和大家分享安卓开发者不得不知的5款框架,一起来看看吧,新技能get走起~~ 1.thinkAndro ...

随机推荐

  1. 二维码的扫描和生成--第三方开源--ZXing

    ZXing的二维码功能的提取lib下载地址:https://github.com/xuyisheng/ZXingLib 1.扫描二维码: 我们扫描就是要用到这个CaptureActivity类,直接把 ...

  2. New Concept English three (47)

    Pollution is the price we pay for an overpopulated, over industrialized planet. When you come to thi ...

  3. 从jQuery学细节

    前言 最近看了两遍jQuery源码,感觉只是看懂了jQuery的小部分小部分,不过仅此,就已经对john resig佩服的五体投地咯.. 下面附上这位帅哥的靓照,记住吧,是他改变了世界. 看的大多是实 ...

  4. CodeForces - 150C :Smart Cheater (线段树,求最大连续区间)

    I guess there's not much point in reminding you that Nvodsk winters aren't exactly hot. That increas ...

  5. 转载:java电商面试介绍(不完整版)

    转载: http://blog.csdn.net/xue_mind/article/details/52959107

  6. [HihoCoder1413]Rikka with String

    vjudge 题意 给你一个串,问你把每个位置的字符替换成#后串中有多少本质不同的子串. \(n\le 3*10^5\) sol 首先可以计算出原串里面有多少本质不同的子串.显然就是\(\sum_{i ...

  7. ACM学习历程—HDU5667 Sequence(数论 && 矩阵乘法 && 快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=5667 这题的关键是处理指数,因为最后结果是a^t这种的,主要是如何计算t. 发现t是一个递推式,t(n) = c ...

  8. Nginx理解

    说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了.摘一段百度百科上的描述: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后 ...

  9. BZOJ4130:[PA2011]Kangaroos

    浅谈\(K-D\ Tree\):https://www.cnblogs.com/AKMer/p/10387266.html 题目传送门:https://lydsy.com/JudgeOnline/pr ...

  10. Tex 括号的反思

    在Tex中,左双引号是“,右双引号是”,输入一篇包含双引号的文章,你的任务是把它转换成Tex的格式. 样例输入: “To be or not to be,”quoth the Bard,"t ...