业务场景

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 , 总结

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

  1. CRUD全栈式编程架构之导入导出的设计

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

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

    服务层代码 首先我先放出2个主要类的代码再分别讲解 接口 using System; using System.Collections.Generic; using System.Linq; usin ...

  3. CRUD全栈式编程架构之更精简的设计

    精简的程度 ViewModel精简 服务精简 控制器精简 Index.cshmtl精简 AddOrEdit.cshtml精简 效果:最精简的情况下,只需要写Entity这一个数据库实体然后加上一些简单 ...

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

    Layout的设计 模板模式 mvc的模板特别类似设计模式中模板方法模式,结合Layout中RenderSection和RenderBody方法可以将部分html展现逻辑延迟到具体的视图页面去实现里面 ...

  5. CRUD全栈式编程架构之数据层的设计

    CodeFirst 一直以来我们写应用的时候首先都是创建数据库 终于在orm支持codefirst之后,我们可以先建模. 通过模型去创建数据库,并且基于codefirst可以实现方便的 实现数据库迁移 ...

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

    MVC执行流程 路由的扩展 我理解的路由作用有以下几个 Seo优化,用“/”分开的url爬虫更爱吃 物理和逻辑文件分离,url不再按照文件路径映射 Controller,Action的选择 MVC路由 ...

  7. CRUD全栈式编程架构总结

    这里放出实例代码 github.com/SkyvenXiong/HCC

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

    页面 这里界面我采用jquery miniui来做的,当你完全了解了整个设计之后可以轻松切换到其他的js框架,个人认为类似muniui,easyui等等这类可以将web界面做得和winform类似的框 ...

  9. 全栈式JavaScript

    如今,在创建一个Web应用的过程中,你需要做出许多架构方面的决策.当然,你会希望做的每一个决定都是正确的:你想要使用能够快速开发的技术,支持持续的迭代,最高的工作效率,迅速,健壮性强.你想要精益求精并 ...

随机推荐

  1. linux 下结合find 和 rm 删除大量文件

    echo "remove only files, the logs folder and it contents will not be removed"find /opt/tra ...

  2. python3 多线程笔记

    import threadingimport time #继承 class threading.Threadclass MyThread(threading.Thread): #类做初始化 def _ ...

  3. sql replace()函数的用法

    replace()函数的用法: replace('带操作的字符串','被换掉的内容'[要换的内容,可写可不写默认为null]) 先上一张图 下面我门对jxid进行操作: select replace( ...

  4. 非局部均值(Nonlocal-Mean)

    转载自网站:http://www.cnblogs.com/luo-peng/p/4785922.html 非局部均值去噪(NL-means)   非局部均值(NL-means)是近年来提出的一项新型的 ...

  5. 2.2 Rust 数据类型

    2.2 数据类型 let guess: u32 = "42".parse().expect("Not a number!"); Rust has four pr ...

  6. Jupyter 环境配置

    1. 找到python文件目录, 用管理员身份打开powershell python -m pip install jupyter 2. Jupyter notebook

  7. mysql 安装以及卸载 CentOS 6.9

    mysql官网下载地址:https://dev.mysql.com/downloads/mysql/ 本次操作系统是    阿里云服务器 CentOS 6.9 64位 下载得到tar 包: mysql ...

  8. SpringBoot---数据缓存(未完待续)

    1.概述 1.1 在Spring中使用缓存的关键是配置CacheManager,而SpringBoot为我们自动配置了多个CacheManager的实现: 1.2 SpringBoot的CacheMa ...

  9. SQL 还原或备份失败数据库变成单个用户模式无法访问

    还原数据失败了,数据库变成单个用户模式,无法操作了,执行下面的语句就可以了 USE master GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @S ...

  10. Silverlight 减小 Xap 的大小

    当Silverlight工程引用了很多dll后,加载的速度就会很慢,通过下面方式可以减小xap包的大小 勾选 “通过使用应用程序库缓存减小xap大小”,勾选此项后vs会自动将微软自身和外部引用不变的d ...