业务场景

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

最新文章

  1. nginx 虚拟主机基于端口的搭建
  2. 三维网格补洞算法(Radial Basis Function)
  3. 微信签名算法的服务端实现(.net版本)
  4. LeetCode 5 Longest Palindromic Substring manacher算法,最长回文子序列,string.substr(start,len) 难度:2
  5. Java for LeetCode 225 Implement Stack using Queues
  6. Python if..else
  7. URL encode 与 URL decode 的C语言实现
  8. HDU 5775 Bubble Sort(线段树)(2016 Multi-University Training Contest 4 1012)
  9. (诊断)为GitHub添加SSH key时出现“Could not open a connection to your authentication agent”错误的应对方案(转)
  10. sql server 高可用故障转移(2)
  11. python练习五—简单web应用
  12. 部署Asp.net core & Nginx,通过nginx转发
  13. Promise及Async/Await
  14. Css3新属性:calc()
  15. java基础-三元运算符
  16. 简单的redis 的list应用
  17. nginx配置.htaccess伪静态
  18. day40-socket编程
  19. Haskell语言学习笔记(92)HXT
  20. Storm 第四章 Storm常见问题

热门文章

  1. lintcode - 被围绕的区域
  2. hdu1698 线段树(区间更新~将区间[x,y]的值替换为z)
  3. css3 box-shadow 用法
  4. 安装pyautogui时报错备注
  5. MSF利用ms17-010漏洞过程记录
  6. canvas基础入门(一)canvas的width、height于css样式中的宽高区别
  7. KeyStore相关
  8. [转]JavaScriptSerializer中日期序列化
  9. DP:凑零钱问题/最长非降子序列(C++)
  10. java代码混淆