ASP.NET Mvc实用框架(一)Ioc、仓储模式和单元工作模式
Framework.EF
首先看一下这个类库:

Extended文件夹存放的是EntityFramework.Extensions这个插件的源代码,没有别的原因,就是本人觉得这个插件挺好的,每次省的下载而已
IDependency:用于依赖注入的接口
IRepository和Repository:用于仓储模式
IUnitOfWork和UnitOfWork:用于单元工作模式
Page:分页实体
1、什么是依赖注入?
记得第一次接触依赖注入的时候是在我大二暑假自己出去实习的时候,当时带我的人让我看一看依赖注入这个东西,因为项目用到了,我愣是看了一个星期,各种熬夜、百度、问人,还没明白怎么回事?现在想想挺搞笑的。其实这个东西需要一定的项目经验理解起来会方便些,其实我们平时在研究问题的时候,当你实在解决不了的时候,不妨先记下来,有空的时候多看看,总有一天会豁然开朗的。扯远了。。。
其实依赖注入我跟喜欢把它当成控制反转,这样更贴切,为什么呢?举个例子:三层架构中的BLL层,我们通常定义一个接口层让它继承,在使用的时候,直接 接口申明 - BLL实例化,而控制反转的思想是将它们的顺序颠倒过来,也就是说我们不再关注接口到底是怎么实现的了,这样就实现了解耦合,在我看来这是一项伟大的创新。而实现控制反转这个思想当然是依赖注入容器,当然插件有很多,我用过Unity和Autofac,个人感觉还是第三方的Autofac强大,性能相对于Unity而言十分的明显
2、什么是仓储模式?
关于这方面的介绍有很多,我说说我的理解,通常我们所用的ORM都会自己有一套CURD相关的方法,比方说EF中的dbcontext,NH中的session,其实我们会发现在仓储模式中又会定义一套CURD相关的方法,有的人会问:这TM的不是重复了吗?当时我也是这么想的,其实不然,如果你的ORM永远不可能变的话,那么你可以不用仓储模式,但是这种情况概率基本不可能发生,谁也无法保证你的领导脑袋会不会抽风,万一,就万一哪天需要更换底层的东西的呢?如果你使用了仓储模式的话,这样更换底层就十分的方便,只需要将仓储中的实现挨个重写一遍,这就是好处。
3、什么是单元工作模式?
其实就是统一资源,减少资源浪费而已,我们就拿EF来说,其实我发现有些人会在单元工作模式中定义了一些事务的操作方法,在我看来这是没有必要的,为什么呢?因为EF中的上下文本身就是具有事务性质的,我们只需要在单元工作模式中定义一个统一提交的方法即可。
本系列完成之后附上源代码
ASP.NET Mvc实用框架(一)Ioc、仓储模式和单元工作模式的更多相关文章
- 新作《ASP.NET MVC 5框架揭秘》正式出版
ASP.NET MVC是一个建立在ASP.NET平台上基于MVC模式的Web开发框架,它提供了一种与Web Form完全不同的开发方式.ASP.NET Web Form借鉴了Windows Form基 ...
- 《ASP.NET MVC 5 框架揭秘》
<ASP.NET MVC 5 框架揭秘> 基本信息 作者: 蒋金楠 出版社:电子工业出版社 ISBN:9787121237812 上架时间:2014-8-1 出版日期:2014 年8月 开 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2): ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(8)-DbSession线程内唯一
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(8)-DbSession线程内唯一 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ( ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2) ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(3)-面向接口的编程
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(3)-面向接口的编程 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 (2):数据 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 前言:这 ...
随机推荐
- 3D旋转菜单
今天来个3D旋转菜单,是纯css3实现的,主要用到transform,transition,backface-visibility. 主要是transform这个变换,它是今天猪脚. transfor ...
- mysql导入导出sql文件
window下 1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u dbuser -p dbname > dbname.sql2. ...
- Execute Sql Task 的Result DataSet如何返回
Execute Sql Task的Result DataSet 主要有以下四种,当Execute Sql Task返回结果之后,需要使用SSIS Variable 来接收数据. 例子中使用的数据表代码 ...
- SQL Server 堆表行存储大小(Record Size)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 堆表行记录存储格式(Heap) 案例分析(Case) 参考文献(References) 二.背 ...
- 【Win 10应用开发】多窗口视图
Windows App一般情况下,同一时刻只能有一个应用程序实例在运行,为了在特殊需求下可以同时呈现不同的UI,SDK提供了多视图操作支持. 应用程序可以创建新的应用视图,以新的视图为基础可以呈现与主 ...
- WPF Datagrid删除一行
private void btnDel_Click(object sender, RoutedEventArgs e) { if (DGUser.SelectedItem != null) { Dat ...
- ASP.NET WebAPi之断点续传下载(上)
前言 之前一直感觉断点续传比较神秘,于是想去一探究竟,不知从何入手,以为就写写逻辑就行,结果搜索一番,还得了解相关http协议知识,又花了许久功夫去看http协议中有关断点续传知识,有时候发觉东西只有 ...
- 从零开始编写自己的C#框架(10)——项目实施计划与甘特图
不知不觉本系列已经写了一个月,编码前的各项工作到此也终于结束了.回头看看这一个月走过来,白天上班晚上码字查资料,写写改改,挺不容易的.很多时候有些知识会用,知道是怎么回事,但并不等于能写出来.错别字. ...
- iOS 使用xib后获取view的frame出错的问题
如果控制器使用xib做的,在viewDidLoad方法中获取的view.frame是不正确的 这根xib的加载有关, 可以把需要做的事情写在viewWillAppear中就能解决
- Web接口测试工具--Jmeter
关于Jmeter性能测试工具不再过多介绍.如果你要学习软件性能测试,那么多少应该会对它有所耳闻. 强烈建议阅读官方文档学习:http://jmeter.apache.org/index.html 还有 ...