Asp.Net MVC +EF CodeFirst+多层程序设计
1.概述
这是一个基于个人博客的一个项目,虽然博客根本没必要做这么复杂的设计。但是公司有需求,所以先自己弄个项目练练手。项目需要满足下列需求
1.层与层之间需要解耦,在后期上线更新维护时不需要覆盖,只需要更新局部dll即可,也就是插件机制
2.代码安全性,公司有找外包公司要些人,但是又不想让他们得到所有代码,就需要利用接口来规范开发。
3.一开始没有完整的需求说明和数据库设计文档。我们是轻文档开发,也就是说在没有完全上线之前需求随时可能更改,而且数据库一开始也没有设计好,而是开发一点添加一点,也随时会更换需求。
为了保证以上要点,我们就需要搭建一个非常具有灵活性的系统,对一个刚刚开始参加.net开发工作的我来说却是具有很大挑战性,虽然之前也有受过高人指点。
2.程序设计

在程序设计时,我考虑到以上需求,我大致分了一下这些层。
1.实体模型层:CodeFirst实体对象
2.数据访问层:DBContext对象,其实在我接触EF之后就对数据访问层的概念就不太一样了,我现在都觉得数据访问层都没什么太大必要。因为不需要写Sql语句了,都是lambda表达式。这是我一个疑问,大家可以一起讨论下
3.数据库访问接口层:规范数据库访问层
4.数据库访问层工厂:这里我可以通过反射来反射出数据访问层的实例
5.业务逻辑层:业务逻辑代码
6.业务逻辑接口:规范业务逻辑
7.业务逻辑工厂:反射业务逻辑实例
8.MVC:前台展示
1.通过上面我们可以发现,层与层之间是解耦了,比如说我按照某个层的接口规范写好了一个dll,然后更新好服务器,无需将整个项目编译,也无需将整个项目重新覆盖,只需要修改下反射的配置文件即可,也不会影响到网站的正常运行,这才是我要的效果。
2.接口规范些好后,也无需编码人员将整个项目都拿到手,只要自己按照接口规范写好代码,放到测试环境中一测试就OK了。这样对于保证公司代码安全性还是有一定作用的。
3.通过CodeFirst我们可以比较轻松的更换需求,而且也不用一开始就把所有需求罗列出来,然后设计数据库,我们可以一边做功能的时候一边来增加表。
以上思路应该比较适合大众化,中小项目按照这样的设计应该没什么问题。大家如果有什么好的建议或者发现有什么不对的地方,还请提出来,以免误导了他人。
Email:luozhiqiang@cidtech.cn
Asp.Net MVC +EF CodeFirst+多层程序设计的更多相关文章
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 前言:这 ...
- [转帖]Asp.Net MVC EF各版本区别
Asp.Net MVC EF各版本区别 https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 201 ...
- C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例
C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(23)-设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(22)-为用户设置角色
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列
http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开 ...
- ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK
看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, 加入一个表10W数据,另一个表也是10万数据,当你用linq建立一个连接查询 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
随机推荐
- USACO 1.5.4 Checker Challenge跳棋的挑战(回溯法求解N皇后问题+八皇后问题说明)
Description 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子. 列号 0 1 2 3 4 5 6 ...
- "Hello World!"团队第四次会议
Scrum立会 博客内容是: 1.会议时间 2.会议成员 3.会议地点 4.会议内容 5.todo list 6.会议照片 7.燃尽图 一.会议时间: 2017年10月16日 11:44-12:18 ...
- AVL树 算法思想与代码实现
AVL树是高度平衡的二叉搜索树,按照二叉搜索树(Binary Search Tree)的性质,AVL首先要满足: 若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不为空, ...
- linux awk,sort,uniq,wc,cut命令详解
1.awk awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 $ 表示当前行 $ 表示第一列 NF 表示一共有多少列 $NF 表示最 ...
- Lucene 高级搜索
自定义评分 public class MyScoreQuery { public void searchByScoreQuery(){ try { IndexSearcher searcher=new ...
- TP中CURD操作
CURD操作 CURD操作也就是模型操作数据表的基本操作.C(Create).U(Update).R(Read).D(Delete)操作就是增删改查操作. 6.1.增加操作 回想一下在mysql中增加 ...
- Java多线程 -sleep 用法详解
阿里面试官问我这个问题,我仔细总结了一下: 参考:sleep.yield.wait.join的区别(阿里面试) 我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间.那么你有没有正确 ...
- delphi完美经典--第十八章
第18章数据感知组件 一.TDBText组件 用来以只读.一次一条记录的方式,显示DataSet中的某一字段值.因同样继承自TCustomLabel,TDBText组件除了数据感知功能外,与标准组件T ...
- 【uoj#175】新年的网警 结论题+Hash
题目描述 给出一张 $n$ 个点 $m$ 条边的无向连通图,每条边的边权为1.对于每个点 $i$ ,问是否存在另一个点 $j$ ,使得对于任意一个不为 $i$ 或 $j$ 的点 $k$ ,$i$ 到 ...
- Django模板语言循环字典
1. 对于字典,可以有下列用法: {% for row in user_dict.keys %} {% for row in user_dict.values %} {% for row in use ...