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)框架搭建 前言:这 ...
随机推荐
- CRM/ERP 企业管理软件中常见的七种程序设计模式
管理软件中的常见代码设计模式,来自于业务上的需要,有不恰当的地方欢迎批评指正. 1 RE-TRY 重试模式 场景:在连接数据库服务器时,如果SQL Server数据库没有启动或正在启动,我们需要有一 ...
- A Simple OpenGL Shader Example
A Simple OpenGL Shader Example eryar@163.com Abstract. OpenGL Shading Language, the high-level progr ...
- MySql联接算法
联接算法是MySql数据库用于处理联接的物理策略.在MySql 5.5版本仅支持Nested-Loops Join算法,如果联接表上有索引时,Nested-Loops Join是非常高效的算法.如果有 ...
- AngularJS之高级Route【三】(八)
前言 我们知道默认的路由提供(Route Provider)在复杂的应用程序中是不太适合应用场景,它存在诸多限制,所以在Angular 1.2之后此时我们不得不将路由提供作为一个单独的模块当我们需要使 ...
- MySQL学习笔记十:日志管理
1.错误日志文件 MySQL的错误日志文件记录错误信息,还会记录mysqld进程的关闭和启动的信息,但也不是什么错误信息都会记录,只记录mysqld进程运行过程中发生的关键性错误. 错误日志的启动,可 ...
- JavaScript:声明变量名的语法规则
一.语法规则 1.变量必须使用字母.下划线(_)或者美元符($)开始. 2.然后可以使用任意多个英文字母.数字.下划线(_)或者美元符($)组成. 3.不能使用JS关键词与保留字. 二.示例 var ...
- JDBC常用API小结
建立数据库链接的三种方式: package com.victor_01; import java.sql.Connection; import java.sql.Driver; import java ...
- objective-c 语法快速过(5)
oc 的分类-Category 通过分类(category)可以以模块的方式向现有的类添加方法. 它提供了一种简单的方式, 用它可以将类的定义模块化到相关方法的组或分类中.它还提供了扩展现有类定义的简 ...
- C++运算符重载
C++运算符重载 基本知识 重载的运算符是具有特殊名字的函数,他们的名字由关键字operator和其后要定义的运算符号共同组成. 运算符可以重载为成员函数和非成员函数.当一个重载的运算符是成员函数时, ...
- hibernate笔记--基于主键的单(双)向的一对一映射关系
上一节介绍的基于外键的一对一映射关系中,在Person表中有一个外键列idCard_id,对应的idCard表的主键id,至于基于主键的一对一映射关系,就是指Person表中抛弃了idcard_id这 ...