CRUD全栈式编程概述

业务场景

CRUD,从数据驱动的角度几乎所有的的业务都是在做这样的事情。
  几乎所有的操作都是在做对表的增删该查。
  假设我们将数据库数据规个类:
  分为基础/配置数据和业务/增长数据,或者说静态数据和动态数据。
  其中静态数据是由后台管理员编辑的产生,动态数据是由客户产生。
  那么这部分中的静态数据往往伴随着完整的增删改查逻辑。
  完整的增删改查逻辑指的是,有对数据库某个表数据的查询。
  一条或者几条数据的添加,删除,修改。
  再直白一点就是有个界面,上面有查询,添加,删除,修改,导入,导出的按钮。


设计描述

我针对这上面的情况做了这个设计,技术上用到asp.net mvc和 entityframework的codefirst模式。

由于涉及到从web界面到最底层的数据库设计 所以我把它叫做CRUD全栈式设计

整体架构如图所示:

简要说明:

ListLayout是列表页的布局页
AddOrEditLayout是添加和修改页面的布局页
CrudController 是所有Controller的基类,继承自Controller
  其中ViewModel是泛型扩展的模型这个维度,为必须
  SearchModel是泛型扩展的查询实体这个维度,可选
  OrderModel是泛型扩展的排序实体这个维度,可选
ICrudService 是所有服务接口的父接口
  其中三个为泛型扩展维度,和CurdControler一样
CurdService为所有服务的基类,并且继承自ICrudService,其中Entity是efcodefirst的实体
Repository 这里借用了NLayerApp中的Repository设计
  SortExpression部分借用了ApWorks中的设计
DB 这里我们用codefirst的话,db我理解起来等同于ef的dbcontext


后续

陆续会有几篇文章详细说明这个设计

1,数据层的设计
  2,服务层的设计
  3,控制器的设计
  4,视图的设计
  5,mvc的扩展
  6 , 导入导出的设计
  7 , 更精简的设计
  8 , 总结

时间: 2024-10-30 23:56:04

CRUD全栈式编程概述的相关文章

CRUD全栈式编程架构之服务层的设计

服务层代码 首先我先放出2个主要类的代码再分别讲解 接口 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Coralcode.Framework.Models; using Coralcode.Framework.Page; namespace Coralcode.Framework.Services

CRUD全栈式编程架构之界面层的设计

Layout的设计 模板模式 mvc的模板特别类似设计模式中模板方法模式,结合Layout中RenderSection和RenderBody方法可以将部分html展现逻辑延迟到具体的视图页面去实现里面实现.结合我们增删改查的逻辑,我们的用户界面,我们将页面分为这几个区域,实现部分逻辑以后,部分留给具体的页面去实现.例如图片中新增,编辑,删除,导入,导出,查询都是架构自带的操作,至于复制就给页面扩展,查询条件也留给具体的页面中扩展,模板中给出RenderSection即可. 执行顺序 这个执行顺序

CRUD全栈式编程架构之MVC的扩展设计

MVC执行流程 路由的扩展 我理解的路由作用有以下几个 Seo优化,用“/”分开的url爬虫更爱吃 物理和逻辑文件分离,url不再按照文件路径映射 Controller,Action的选择 MVC路由的扩展 实话实说MVC的路由我很少去做扩展,在MVC4时代,还会去重写掉url的大小写,而在MVC5之后,MVC自带了配置去小写化url.不过有一个配置还是必须要提一下那就是Area,在你的系统达到一定规模之后,Controllers通过Area来管理将会变得更容易.这里给出我的Area扩展,很简单

CRUD全栈式编程架构之控制器的设计

页面 这里界面我采用jquery miniui来做的,当你完全了解了整个设计之后可以轻松切换到其他的js框架,个人认为类似muniui,easyui等等这类可以将web界面做得和winform类似的框架,特别适合做后台管理系统.要讨论controller的设计必须结合界面,这里我给出界面截图和控制器的代码,这一篇主要讲控制器的代码,下一篇再讲界面的设计. 上一篇忘记说了,IVeiwModel是一个dto或者说viewmode的接口,我的应用里面一般不严格区分viewmode和dto,这个接口之后

数据层全栈式编程架构

CRUD全栈式编程架构之数据层的设计 CodeFirst 一直以来我们写应用的时候首先都是创建数据库 终于在orm支持codefirst之后,我们可以先建模. 通过模型去创建数据库,并且基于codefirst可以实现方便的 实现数据库迁移的工作.使用codefirst有以下几个技巧, 以EntityFramework为例,结合我这个设计做了以下改进 1.模型的识别 建立一个基类命名Entity,里面只有一个long类型的id字段. 所有需要映射到数据库的模型都继承自Entity, + 2.模型的

Java从0到全栈-Java语言概述与开发环境搭建

Java从0到全栈-Java语言概述与开发环境搭建 Java从0到全栈 Java语言概述 Java发展历史 Java之父-James Golsing 起源 1991年,SUN(Standford University Network)公司的James Golsing领导的工程师小组想要开发一种用于像电视机.微波炉.电话这样的消费类电子产品的小型计算机语言,该产品的特点是由于不同的厂商选择不同的CPU和操作系统,因此要求该语言不能和特定的体系结构绑定在一起,也就是跨平台的.最初将这个语言命名为Oa

今天烦死了,各种技术,各种问题,全栈式多屏工程师不好做啊

感言:全栈式多屏工程师不好做啊 今天,是最近写代码最烦的一天啊,遇到各种问题. 1.公司项目,发短信不成功.    其中一个平台的短信发送不成功,这个真不能怪我.   一是由于,HTTP短信接口的API地址不对,404.   而是由于,WebService接口,没有SDK包,只有SDK的文档. 2.表格组件grid有问题.   无论怎么尝试,分页总是失败.   秒针原来某个同事写的grid组件,用的比较多,但是2.0和3.0有很大变化.   参数的格式在变化,接受参数的方式也在变化,Spring

基于NodeJS的全栈式开发

随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本.为了提升开发效率,前后端分离的需求越来越被重视,后端负责业务/数据接口,前端负责展现/交互逻辑,同一份数据接口,我们可以定制开发多个版本. 这个话题最近被讨论得比较多,阿里有些BU也在进行一些尝试.讨论了很久之后,我们团队决定探索一套基于NodeJS的前后端分离方案,过程中有一些不断变化的认识以及思考,记录在这里,也希望看到的同学参

如何学习(1):构建全栈式知识结构

有次下班到家楼下等电梯,碰巧一位妈妈抱到两岁的小女孩在看旁边的宣传画.这时电梯还没到,这位妈妈就指着海报上的字读给小女孩,"这是太阳,那是月亮"--,想借这个机会教小孩认字. 这是中国式的.传统的教学方法,其实我对这种死记硬背的方法不怀好意,于是在电梯上开起了小差,为什么这种方法效果不好,不招受教者的讨好呢. 如果我是教自己的小女儿认字,我会怎么教呢? "牛牛,你看,上面画的是太阳.你知道吗?太阳公公每天很早就起床了,大地才开始暖起来,小朋友们才可以出来玩耍.到了晚上,太阳公