zoukankan      html  css  js  c++  java
  • 简单好用的General开发框架

    1、开篇概述

             2004年学习编程,2007年学习C#以来,做的多半都是跟数据库打交道的工作,所以也积累了很多数据库方面的知识,用过一些ORM框架,从了解掌握到自己实现,慢慢积累了很多代码,直到2010年的某天,想把之前和以后积累的一些代码、编程技巧之类的融合进一个C#的开发框架中去,于是这个开发框架就诞生了。起初叫过NetData,后来改名为General,取通用之意,因为自身编程水平不是很高,所以没有在这个框架之中糅合进一些高深的技术,都是一些技巧性的、避免重复劳动的代码,大概也就有些反射、设计模式的应用。还应当说明的是框架之中融进了一些从网上取到的代码,大部分都经过了本人的修改完善,已经成为了框架的一部分。

             General框架诞生之日起,我就一直将它应用到工作和业余项目,通过项目来完善功能、修改BUG,经过许多年的修改,目前BUG已经相对较少了。它主要是适用于一些中小型管理信息系统的搭建,特别是其中的数据库访问和ORM功能,都可以直接利用SQL语句来进行处理,大大降低了学习成本。一直以来我都将这个框架公开给同事们使用,也收到了很多好评,特别是它的简单方便,得到许多人的青睐,也根据同事们的意见做了非常多的修改,这次将它在这里开源,一是希望将自己的部分劳动成果给更多的人共享,共同学习提升,二是希望更多的人对它进行评价,以检验自己的编程水平。

             General框架同时共享的还有一个代码生成器,暂且就叫做General代码生成器吧,这个生成器比框架的创建更早,大概是在2008年初左右,刚开始在CSDN上提供过下载,但是由于那时候这个代码生成器还非常不完善,功能有限,所以没有起到太好的效果,目前这个代码生成器经过多年的改造,功能已初步完善,可以支持自定义模板的代码生成,比较好用,作为General框架的附带工具,一并共享出来,但目前代码生成器还不便公开源码。

             2General框架介绍

             2.1框架的组成

    打开解决方案可以看到,其实General框架的组成也不多,包括以下组件:

    1General.Common

    通用资源部分,包含一些C#常用的辅助类库,如ConfigXmlString、加解密的帮助类

    2General.Data

    数据库访问与ORM部分,接口类是DataManager

    3General.Extend

    扩展资源部分,包含一些不常用和引用第三方的类库,如拼音生成、PdfExcelZip

    4General.Web

    Web开发辅助资源部分,主要为WebHelper

    5General.WinForm

    WinForm开发辅助资源部分,主要为FormHelper

    6General.WinForm.ExControls

    扩展控件资源

    7Sample.Market.Logic

    示例项目的业务逻辑部分

    8Sample.Market.Model

    示例项目的实体类部分

    9Sample.Market.WinForm

    示例项目的WinForm界面

    从以上的介绍可以看到,General框架不光包含数据库访问与ORM,还包括很多常用的开发辅助类,主要是为了简化C#程序开发而设计。其中General.Data,即数据库访问与ORM部分会有一篇详细的说明在源码中包含。

    2.2数据库访问与ORM

    使用General框架进行数据库开发是非常方便的,主要体现在:

    1)配置简单,通过在App.configWeb.config加入两行配置或是一行代码就可以完成配置;

    2)支持多数据库,目前General框架支持的数据库有:AccessSqliteSqlServerOracleMySql几种;

    3)统一访问接口,所有的数据库访问都可以通过DataManager一个类来进行,并且DataManager提供了一个名为Default的默认实例来方便使用;

    4)使用特性或Xml文件两种方式进行数据库映射,特别是使用特性的方式,结合代码生成器可以非常快速的生成完所有的实体类文件;

    5)丰富的方法支持,不仅支持原生SQL操作,还提供丰富的ORM方法,并且ORM结合SQL语句使用,更为灵活;

    6)多种参数化支持方案,即可以通过动态参数、字典参数还可以通过链式编程进行参数化;

    7)方便的事务支持;

    8)主键生成支持;

    9)数据库结构访问支持。

    2.3 ORM使用举例

    下面以一个简单的例子来了解General框架ORM部分的使用方法

    1)配置

    App.configWeb.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 WebWinForm界面开发支持

    在界面开发上,以前经常会有大量的控件取值赋值操作,如实体保存前,将控件值赋值给实体属性,如:

        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命名为与实体属性相同的名称,然后使用WebHelperFormHelperCollectAndFill方法即可自动完成控件到属性的赋值工作,如:

        Customer cust = new Customer();
        FormHelper.CollectAndFill(this, cust);
        DataManager.Default.Save(cust);

    2.5其他功能

    General框架更详细介绍会在以后慢慢完成,下面提供General框架源码和代码生成器的下载。

      General框架源码下载

      General框架示例程序的数据库

    General代码生成器 

          

  • 相关阅读:
    ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径
    【翻译】.NET 5 Preview2发布
    ASP.NET Core AutoWrapper 自定义响应输出
    TypeScript数据类型
    classpath和classpath*区别
    关联查询报错org.apache.ibatis.builder.BuilderException: Ambiguous collection type for property 'episodeList'. You must specify 'javaType' or 'resultMap'.
    IDEA无法创建Spring Initializr项目
    npm ERR! xd_demo@0.1.0 serve: `vue-cli-service serve`
    打开cmd的几种不常用方式
    idea导入maven项目后有红线
  • 原文地址:https://www.cnblogs.com/lgyup/p/4613250.html
Copyright © 2011-2022 走看看