RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用

功能介绍

这个项目经过了大半年的持续更新到目前的阶段基本稳定

所有源代码都是开源的,在github https://github.com/neozhu/MVC5-Scaffolder 共享

整个项目结构,技术框架完全是基于http://genericunitofworkandrepositories.codeplex.com/ 实现。

轻量级的N层架构,Unit Of Work and Repository 设计模式,Entity Framework Code-first的实现方式,这样的技术架构非常简洁和完美。

而我做的就是通过visual studio 2013提供的 Scaffolder代码生成向导的扩展接口上进行自定义开发通过实体类生成这些数据架构所需要源代码,把大量重复的代码利用工具自动生成实现快速开发的同时又有利于规范开发人员的编程习惯。

已经实现的基本功能

  1. 单个实体类的增删改查,都是通过easyui datagrid实现
  2. 实体类中定义了有外键关键字的字段,会自动生成combox的查询和编辑操作控件
  3. 实体类中定义了一对多,主从表结构的,系统自动主从表同时编辑操作查询的页面和功能
  4. 编辑功能,会根据字段类型,验证规则生成不同的编辑模式,比如日期类型用datebox,数字类型就用numberbox,必填的验证可以实现
  5. 查询功能,会根据字段类型的不同生成不同的控件方便操作,datebox,combox
  6. Excel导入功能,目前只能实现简单表导入的配置

使用向导

  1. 新建一个Controller

  1. 选择 RUF MVC5 Repositories Framework Generator

  1. 选择你要生成的Model,Data Context

Generate views选项说明

  1. Over write existing pages 覆盖已经存在的view
  2. Generate Master-Detail relationship Action and PageView 如果实体类中定义了外键和一对N的集合类型,那么会自动生成主从关系的操作页面和对应的Controller
  3. Set Form Layout Columns 选择生成编辑页面是字段排列成几列在一行上

  1. 定义实体验证规则和中文说明

  1. 更新数据库

这里使用的EntityFramework 的code-first模式创建的数据访问类,因此当你修改了实体类的字段属性系统会重新更新到实体数据库

  1. 打开 Package Manager Console
  2. 运行 add-migration 系统会生成对应修改的脚本
  3. 运行 update-database –script 系统会把脚本更新到物理数据库同时生产一个sql脚本用于更新你的生产环节或其他数据库

  1. 完成系统生成

  2. 需要的源代码文件

以下就是标准的MVC N层架构规范代码

  1. /Controllers/ProductsController.cs(控制类)
  2. /Models/ProductMetadata.cs(实体类)
  3. /Repositories/Products/ProductQuery.cs(数据访问类)
  4. /Repositories/Products/ProductRepository.cs(数据访问类)
  5. /Services/Products/IProductService.cs(业务逻辑类)
  6. /Services/Products/ProductService.cs(业务逻辑类)
  7. /Views/Products/Index.cshtml(视图)
  8. /Views/Products/Edit.cshtml(视图)
  9. /Views/Products/EditForm.cshtml(视图)
  10. /Views/Products/_PopupSearch.cshtml(视图)
  11. /Views/Products/Create.cshtml(视图)
  12. 注册服务

修改/App_Start/UnityConfig.cs

将新生成的服务类注册一下才能使用,这就用UnitOfWork设计模式实现依赖注入

  1. 运行测试

编译成功后运行的界面如下

所有增删改查都是通过easyui datagrid实现

包括必填的验证规则都已经生成

针对一对N的结构生成的视图如下

上半部分为主表操作区,下半部分是明细表操作区。

Demo截屏

RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用的更多相关文章

  1. 代码生成工具Database2Sharp的架构介绍

    1)代码生成工具介绍 Database2Sharp是一款代码生成工具和数据库文档生成工具,该工具从2005年开始至今,一直伴随着我们的客户和粉丝们经历着过各种各样的项目开发,在实际开发中能带来效率的提 ...

  2. Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具

    Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具 介绍 该工具是通过一个github上的开源项目修改的原始作者https://github.com/Supere ...

  3. 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动

    由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...

  4. 基于SqlSugar的开发框架循序渐进介绍(3)-- 实现代码生成工具Database2Sharp的整合开发

    我喜欢在一个项目开发模式成熟的时候,使用代码生成工具Database2Sharp来配套相关的代码生成,对于我介绍的基于SqlSugar的开发框架,从整体架构确定下来后,我就着手为它们量身定做相关的代码 ...

  5. Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导

    Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导 在上 ...

  6. CSS3 Generator提供了13个CSS3较为常用的属性代码生成工具,而且可以通过这款工具除了在线生成效果代码之外,还可以实时看到你修改的效果,以及浏览器的兼容性。

    CSS3 Generator提供了13个CSS3较为常用的属性代码生成工具,而且可以通过这款工具除了在线生成效果代码之外,还可以实时看到你修改的效果,以及浏览器的兼容性. CSS3 Generator ...

  7. 基于SqlSugar的开发框架循序渐进介绍(15)-- 整合代码生成工具进行前端界面的生成

    在前面随笔<基于SqlSugar的开发框架循序渐进介绍(12)-- 拆分页面模块内容为组件,实现分而治之的处理>中我们已经介绍过,对于相关的业务表的界面代码,我们已经尽可能把不同的业务逻辑 ...

  8. 利用代码生成工具生成基于ABP框架的代码

    在前面随笔,我介绍了整个ABP优化过框架的分层模型,包括尽量简化整个ABP框架的各个层的关系,以及纳入一些基类的辅助处理,使得我们对应业务分层类或者接口尽可能减少代码,并具有生产环境所需要的基类接口, ...

  9. mybatis实战教程(mybatis in action)之九:mybatis 代码生成工具的使用

    mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花 ...

随机推荐

  1. [PHP]Yaf + composer 引起大幅性能下降

    composer.json 文件可以用命令 composer init 创建,命令是交互式的. 也可以直接编辑一个 json 文件,如下: repositories 中 url 使用中国全量镜像地址. ...

  2. js 合并表格

    1.css和js部分 <style type="text/css">table.altrowstable { font-family: verdana,arial,sa ...

  3. UVAlive3486_Cells

    给一棵树,每次每次询问一个点是否是另一个点的祖先? 首先,题目的读入就有点坑爹,注意,每个节点的值是说明它下面有多少个儿子节点,直接对于每个下标保存一个值即可. 对于查询是否是祖先,我们可以对于每一个 ...

  4. java8的接口新特性(可以有方法体的接口)(转)

    以前Java的接口中定义的方法不可以有方法体,这样试用起来,有时候听不方便的,当有多个类实现了想同的接口,接口中某一些方法的实现体可能都是一样的时候,这样无疑浪费了很多时间,在写重复的代码(或者说co ...

  5. Linux查看当前目录下文件夹和文件的大小

    File参数实际上是一个目录,就要报告该目录内的所有文件.如果没有提供 File参数,du命令使用当前目录内的文件. 如果File参数是一个目录,那么报告的块的数量就是分配到目录中文件以及分配到目录自 ...

  6. MyBatis框架——mybatis插入数据返回主键(mysql、oracle)

    向数据库中插入数据时,大多数情况都会使用自增列或者UUID做为主键.主键的值都是插入之前无法知道的,但很多情况下我们在插入数据后需要使用刚刚插入数据的主键,比如向两张关联表A.B中插入数据(A的主键是 ...

  7. ORA-30004 错误处理

    一.问题情景: 原SQL: select c.CATEGORY_ID,       c.CATEGORY_NAME,       SYS_CONNECT_BY_PATH(c.CATEGORY_NAME ...

  8. Q114第一颗二叉查找树(链式)

    输入n,然后n个树,建立二叉查找树.从小到大输出每个节点的左右子树,空输出# #include<cstdio> #include<iostream> using namespa ...

  9. Xamarin.Android之下拉刷新

    一.前言 当今任何一个App中只要存在列表,基本上都会使用下拉刷新,而身为Xamarin一族的我们自然也不会落后,下面笔者将带领大家在Xamarin下实现Android中的下拉刷新的效果. 二.准备工 ...

  10. Xamarin.Android之动画

    Translate动画 这个动画是最常使用到的,主要就是将控件从一个位置移动到另一个位置,并且还可以在这其中增加一定的效果,下面我们将采用两种方式实现动画,首选的是利用XML来制作动画,其次就是利用代 ...