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

在上次发布的使用简单Repositories模式生成的代码结构有点繁琐太过复杂,而且整个项目层次结构很不清晰,在开发过程中还是出现大量的逻辑代码写在了Apsx.cs中,感觉有点不伦不类。而最近在codeplex上看到一篇《Generic Unit of Work & (Extensible) Repositories Framework》项目非常受欢迎。

Generic Unit of Work & (Extensible) Repositories Framework是一个非常轻量级的对EntityFramework的扩展还有运用了Unit Of Work依赖注入等设计模式,使得整个项目的结构非常规范并且逻辑层次非常清晰,View(webform)->业务逻辑(Service)-〉实体(ORM)->Database。

下面看一下实际使用的效果

环境配置

Demo源代码 http://files.cnblogs.com/neozhu/unitofworkTutorials.zip

CodePlex开源项目 http://genericunitofworkandrepositories.codeplex.com/

Git Asp.net webform scaffolding项目源代码 https://github.com/neozhu/WebFormsScaffolding/tree/UnitOfWorkRepository 这个分支下

在新建的web项目中除了需要引用Repository.Pattern,Repository.Pattern.Ef6,Service.Pattern还需要使用NuGet 添加以下几个引用:

CommonServiceLocator 1.3

Unity 3.5

WebActivatorEx

Unity.WebForms

添加Unity.WebForms后系统会自动生成 UnityWebFormsStart.cs

接下来做一个Demo

Code-First Entity

Company -> Department

公司实体类 部门实体类 1对多

新建实体类必须继承Entity

新建一个DataContext

到这里基本工作就算完成了,下面是生存代码了

Add Scaffolding item 选择Web Forms Pages Using EntityFramework

先生存一个Company实体的增删改查的4个页面和一个CompanyRepository,一个CompanyService;Repository类生成的方法是对含有一对多多对一关系的实体会生成一个通过外键或主键获取子表的数据

比如Department实体会生成通过ParentId外键获取子部门,通过所在公司获取部门还有根据主键获取所有子部门的方法。

代码生成完后,接下来需要做的就是Unity配置依赖注入的入口

打开UnityWebFormsStart.cs

完成配置吧生成CompanyService,CompanyRepository和DepartmentService,DepartmentRepository加入

下面看一下页面部分的代码,Default分页查询和删除方法

模板生成的页面样式完全使用boostrap css

新增页面的样式

编辑页面,系统会自动生成已自关联的子表的增删改查功能,子表的增删改通过popup的方式弹出,具体后台代码请参考Demo的源代码。

如果觉得有用请点赞 :)

Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导的更多相关文章

  1. asp.net MVC 5 Scaffolding多层架构代码生成向导开源项目(邀请你的参与)

    Visual Studio.net 2013 asp.net MVC 5 Scaffolding代码生成向导开源项目 提高开发效率,规范代码编写,最好的方式就是使用简单的设计模式(MVC , Repo ...

  2. [转]Upgrading to Async with Entity Framework, MVC, OData AsyncEntitySetController, Kendo UI, Glimpse & Generic Unit of Work Repository Framework v2.0

    本文转自:http://www.tuicool.com/articles/BBVr6z Thanks to everyone for allowing us to give back to the . ...

  3. MVC 5 Scaffolding多层架构代码生成向导开源项目

    asp.net MVC 5 Scaffolding多层架构代码生成向导开源项目(邀请你的参与)   Visual Studio.net 2013 asp.net MVC 5 Scaffolding代码 ...

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

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

  5. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转

    .net mvc 站点自带简易SSL加密传输   因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...

  6. 简单的三层asp.net webForm使用Ninject实现Ioc

    简单的三层asp.net webForm使用Ninject实现Ioc 在asp.net webform下使用Ninject的简单过程. 首先建立个项目,如下图,简单三层(PS:UI层要同时引用BLL. ...

  7. ASP.NET WebForm 的路由

    ASP.NET WebForm 的路由 偷会闲, 看看博客园, 有筒子写了篇: ASP.NET的路由 我翻了翻两前的一份邮件, 是我当时在项目之余的时间研究的,那时还没用MVC,所有项目都是 WebF ...

  8. ASP.NET -- WebForm -- 缓存Cache的使用

    ASP.NET -- WebForm --  缓存Cache的使用 把数据从数据库或文件中读取出来,放在内存中,后面的用户直接从内存中取数据,速度快.适用于经常被查询.但不经常变动的数据. 1. Te ...

  9. ASP.NET -- WebForm -- Session的使用

    ASP.NET -- WebForm --  Session的使用 Session是服务器端状态保持机制. 1. Test4.aspx文件与Test4.aspx.cs文件 <%@ Page La ...

随机推荐

  1. dos批处理(bat)运行exe

    @echo off SETLOCAL ENABLEDELAYEDEXPANSIONREM 延迟环境变量扩展 color E echo operate:1.start启动 2.stop停止 3.exit ...

  2. python 实现 Fortran的读取10*0以及换行读问题

    思路,用read来全部读取,然后替换带*的元素来解决.代码如下 import numpy as np import re inf = open('SF.usr') title = inf.readli ...

  3. JAVAC 命令详解

    转自:http://jeffchen.iteye.com/blog/395671 结构 javac [ options ] [ sourcefiles ] [ @files ] 参数可按任意次序排列. ...

  4. assetBundle 中的prefeb资源图片显示粉色方框

    assetBundle打包的资源是有平台属性的,当移动端iOS或者Android AssetBundle资源 在editor 加载的时候,比如TextMeshPro中的字体就不能正确加载 pc端调试, ...

  5. NFS服务简介与配置

    NFS简介 NFS特点 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源 在NFS的应用中, ...

  6. w7 全网架构-rsync-备份

    准备 1.从安装系统开始准备 安装过程中添加网卡 eth0 ip 10.0.0.210 netmask 24 gateway 10.0.0.254 eth1 ip 172.16.1.210 netma ...

  7. 卷积(转自wiki百科)

    维基百科,自由的百科全书 图示两个方形脉冲波的卷积.其中函数 "g" 首先对  反射,接着平移 "t" ,成为  .那么重叠部份的面积就相当于 "t& ...

  8. ESP32作为接入点AP

    作为接入点的第一个任务是使用esp_wifi_set_mode()函数设置ESP32 函数并传递请求,作为接入点,可以把ESP32设置为AP或者APSTA,即 esp_wifi_set_mode(WI ...

  9. docker 容器和镜像理解

    1.镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器.容器和镜像是一对一的,一个容器里就运行一个镜像. 1.base镜像----提供了一个基本的操作系统环境,用户可以根据需要安 ...

  10. WPF常用样式总结

    常用控件样式: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation ...