RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用
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代码生成向导的扩展接口上进行自定义开发通过实体类生成这些数据架构所需要源代码,把大量重复的代码利用工具自动生成实现快速开发的同时又有利于规范开发人员的编程习惯。
已经实现的基本功能
- 单个实体类的增删改查,都是通过easyui datagrid实现
- 实体类中定义了有外键关键字的字段,会自动生成combox的查询和编辑操作控件
- 实体类中定义了一对多,主从表结构的,系统自动主从表同时编辑操作查询的页面和功能
- 编辑功能,会根据字段类型,验证规则生成不同的编辑模式,比如日期类型用datebox,数字类型就用numberbox,必填的验证可以实现
- 查询功能,会根据字段类型的不同生成不同的控件方便操作,datebox,combox
- Excel导入功能,目前只能实现简单表导入的配置
使用向导
新建一个Controller
选择 RUF MVC5 Repositories Framework Generator
选择你要生成的Model,Data Context
Generate views选项说明
- Over write existing pages 覆盖已经存在的view
- Generate Master-Detail relationship Action and PageView 如果实体类中定义了外键和一对N的集合类型,那么会自动生成主从关系的操作页面和对应的Controller
- Set Form Layout Columns 选择生成编辑页面是字段排列成几列在一行上
定义实体验证规则和中文说明
更新数据库
这里使用的EntityFramework 的code-first模式创建的数据访问类,因此当你修改了实体类的字段属性系统会重新更新到实体数据库
- 打开 Package Manager Console
- 运行 add-migration 系统会生成对应修改的脚本
- 运行 update-database –script 系统会把脚本更新到物理数据库同时生产一个sql脚本用于更新你的生产环节或其他数据库
完成系统生成
需要的源代码文件
以下就是标准的MVC N层架构规范代码
- /Controllers/ProductsController.cs(控制类)
- /Models/ProductMetadata.cs(实体类)
- /Repositories/Products/ProductQuery.cs(数据访问类)
- /Repositories/Products/ProductRepository.cs(数据访问类)
- /Services/Products/IProductService.cs(业务逻辑类)
- /Services/Products/ProductService.cs(业务逻辑类)
- /Views/Products/Index.cshtml(视图)
- /Views/Products/Edit.cshtml(视图)
- /Views/Products/EditForm.cshtml(视图)
- /Views/Products/_PopupSearch.cshtml(视图)
- /Views/Products/Create.cshtml(视图)
注册服务
修改/App_Start/UnityConfig.cs
将新生成的服务类注册一下才能使用,这就用UnitOfWork设计模式实现依赖注入
运行测试
编译成功后运行的界面如下
所有增删改查都是通过easyui datagrid实现
包括必填的验证规则都已经生成
针对一对N的结构生成的视图如下
上半部分为主表操作区,下半部分是明细表操作区。
Demo截屏
RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用的更多相关文章
- 代码生成工具Database2Sharp的架构介绍
1)代码生成工具介绍 Database2Sharp是一款代码生成工具和数据库文档生成工具,该工具从2005年开始至今,一直伴随着我们的客户和粉丝们经历着过各种各样的项目开发,在实际开发中能带来效率的提 ...
- Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具
Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具 介绍 该工具是通过一个github上的开源项目修改的原始作者https://github.com/Supere ...
- 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动
由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...
- 基于SqlSugar的开发框架循序渐进介绍(3)-- 实现代码生成工具Database2Sharp的整合开发
我喜欢在一个项目开发模式成熟的时候,使用代码生成工具Database2Sharp来配套相关的代码生成,对于我介绍的基于SqlSugar的开发框架,从整体架构确定下来后,我就着手为它们量身定做相关的代码 ...
- Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导
Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导 在上 ...
- CSS3 Generator提供了13个CSS3较为常用的属性代码生成工具,而且可以通过这款工具除了在线生成效果代码之外,还可以实时看到你修改的效果,以及浏览器的兼容性。
CSS3 Generator提供了13个CSS3较为常用的属性代码生成工具,而且可以通过这款工具除了在线生成效果代码之外,还可以实时看到你修改的效果,以及浏览器的兼容性. CSS3 Generator ...
- 基于SqlSugar的开发框架循序渐进介绍(15)-- 整合代码生成工具进行前端界面的生成
在前面随笔<基于SqlSugar的开发框架循序渐进介绍(12)-- 拆分页面模块内容为组件,实现分而治之的处理>中我们已经介绍过,对于相关的业务表的界面代码,我们已经尽可能把不同的业务逻辑 ...
- 利用代码生成工具生成基于ABP框架的代码
在前面随笔,我介绍了整个ABP优化过框架的分层模型,包括尽量简化整个ABP框架的各个层的关系,以及纳入一些基类的辅助处理,使得我们对应业务分层类或者接口尽可能减少代码,并具有生产环境所需要的基类接口, ...
- mybatis实战教程(mybatis in action)之九:mybatis 代码生成工具的使用
mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花 ...
随机推荐
- 关于内存数据与 JSON
闲话: 正在用 WebBroker 写一个小网站,感受颇多: 1.如果是写一个小东西,应该先考虑下 WebBroker,因为它是分分钟即可上手的. 2.如果要写一个大东西,或许也应该考虑下 WebBr ...
- [付费视频]Delphi视频Android开发使用静态库(A)和动态库(SO)
关于本视频:前阵子接到一个委托,解决Delphi开发Android程序中串口通信的问题,厂家那边提供了c文件,需要翻译成delphi可用,翻译倒是比较简单.不过后来翻译读写ic卡单元的时候进行不下去了 ...
- Android之ImageView 设置宽高
方案一: 设置布局参数 imageView.setLayoutParams(new LinearLayout.LayoutParams(newWidth, newWidth));
- 按enter执行click或者搜索问题
最近需要将按按钮搜索的功能,改为支持按enter回车键,搜索. 实现按enter,执行click事件还是比较简单的. //按回车搜索用户 $(window).keydown(function (eve ...
- 设置IE8 多个Table只产生一个进程
//设置IE8 多个Table只产生一个进程 using Microsoft.Win32; RegistryKey key = Registry.LocalMachine; RegistryKey s ...
- Oracle列操作(增加列,修改列,删除列)
Oracle列操作 增加一列: alter table emp4 add test varchar2(10); 修改一列: alter table emp4 modify test varchar2( ...
- where子句的使用
关系运算符: = > < <= >= != <> 略. 有一个<=> 有啥用? 其实也是判断等于. 不比较NULL值,效果就和= 一样,比较NULL值, ...
- ADO.NET Entity Framework学习笔录(一)
今天开始学习了EF的相关内容,以前只知道ADO.NET,今天学习后觉得有必要写个相关的学习心得,今天就先写第一篇. 我们的再学习的过程中所用到的环境是Windows7+SQLServer2008+VS ...
- 【Java】XML解析之DOM
DOM介绍 DOM(Document Object Model)解析是官方提供的XML解析方式之一,使用时无需引入第三方包,代码编写简单,方便修改树结构,但是由于DOM解析时是将整个XML文件加载到内 ...
- java堆内存与栈内存
java的内存分为两种,堆内存与栈内存: 堆内存用来存放数组和new的对象,比如一个文件,字节流是存放在堆中,栈内存为这个文件开辟一个索引,也就是这个文件的地址,并且保存在栈中.对象由GC处理释放内存 ...