Repository模式介绍汇总
1、Linq To Sql中Repository模式应用场景
http://www.cnblogs.com/zhijianliutang/archive/2012/02/24/2367305.html
http://tech.it168.com/a2011/1214/1288/000001288218_2.shtml
http://git.oschina.net/kuiyu/Repository-Demo
2、分享基于Entity Framework的Repository模式设计
http://www.cnblogs.com/JustRun1983/p/3307774.html
总结一下,Repository在实际使用中,有下面三种特点:
Repository的共同性
有一些公共的方法(增删改查), 这些方法无关于Repository操作的是哪个实体类,可以把这些方法定义成接口IRepository<TEntity>, 然后有个基类BaseRepository<TEntity>实现该接口的方法。
常见的方法,比如Find, Filter, Delete, Create等
Repository的差异性
每个Repository类又会有一些差异性,应当允许它们能够继承BaseRepository<TEntity>之外,还能够再扩展自己的一些方法。所以每个类都可以再定义一个自己特有的接口,定义一些属于自己Repository的方法。
Repository的协同性
不同的Repository可能需要协同,Repository对数据的修改,需要在统一的保存.
3、MVC架构中使用Respository模式实现统一的CRUD操作
http://www.cnblogs.com/guomingfeng/archive/2013/05/28/mvc-ef-repository.html
在数据库系统中,对于数据层来说,所有的操作归根结底无非“C(增加)、R(读取)、U(修改)、D(删除)”这四种操作。四种操作当中,与与业务相关度最大的是读取操作,根据各种不同的业务需求提交不同的查询,其最终执行应该放到业务层面中去进行,而增加,修改,删除这三种操作较为通用,可以作为通用数据操作封装到Repository中。在Repository中,唯一的变化点就是各种不同的实体类型,既然是变化点就应该进行封装,这里使用泛型来封装这个变化点。
4、MVC中使用Repository模式
微软MSDN有介绍:http://msdn.microsoft.com/zh-cn/dd408820 打开网站直接Ctrl+F搜索:使用 Repository 模式
在前面一节中,我们直接在一个控制器动作中使用了LINQ to SQL。我们直接从Index()控制器动作中使用了MovieDataContext类。对于一个简单的应用程序来说,这没有什么问题。然而,当你需要构建更加复杂的应用程序时,直接在控制器类中处理LINQ to SQL会造成一些问题。
在控制器类中使用LINQ to SQL会使以后切换数据访问技术时出现困难。举个例子,你可能想将Microsoft LINQ to SQL切换为使用Microsoft Entity Framework,来作为你的数据访问技术。在这种情况下,你需要在应用程序中重写每一个访问数据库的控制器。
在控制器类中使用LINQ to SQL也使得为应用程序创建单元测试更为困难。通常,在执行单元测试时,你不需要与数据库进行交互。你想要使用单元测试来测试你的应用程序逻辑,而非你的数据库服务器。
为了构建更加适应未来变化以及更加易于测试的MVC应用程序,你应该考虑使用Repository模式。当你使用Repository模式时,你会创建一个独立的repository类,它包含了所有的数据访问逻辑。
当你创建repository类时,你创建了一个接口,该接口代表着所有由repository类所使用的方法。在你的控制器中,你针对接口编写代码,而不是针对repository。通过这种方式,你以后可以使用不同的数据访问技术来实现repository。
Repository模式介绍汇总的更多相关文章
- 分享基于Entity Framework的Repository模式设计(附源码)
关于Repository模式,在这篇文章中有介绍,Entity Framework返回IEnumerable还是IQueryable? 这篇文章介绍的是使用Entity Framework实现的Rep ...
- Spark on YARN两种运行模式介绍
本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发) 问题导读 1.Spark ...
- (转)MVC中的Repository模式
1.首先创建一个空的MVC3应用程序,命名为MyRepository.Web,解决方案命名为MyRepository. 2.添加一个类库项目,命名为MyRepository.DAL,添加一个文件夹命名 ...
- 探究Repository模式的两种写法与疑惑
现如今DDD越来越流行,园子里漫天都是介绍关于它的文章.说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式. 很多时候我们对Repository都还停留在Copy然后使用的阶段, ...
- Laravel Repository 模式
Repository 模式 为了保持代码的整洁性和可读性,使用Repository Pattern 是非常有用的.事实上,我们也不必仅仅为了使用这个特别的设计模式去使用Laravel,然而在下面的场景 ...
- Repository模式
Repository模式的两种写法与疑惑 现如今DDD越来越流行,园子里漫天都是介绍关于它的文章.说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式. 很多时候我们对Reposit ...
- MVC中的Repository模式
1.首先创建一个空的MVC3应用程序,命名为MyRepository.Web,解决方案命名为MyRepository. 2.添加一个类库项目,命名为MyRepository.DAL,添加一个文件夹命名 ...
- 使用Repository模式构建数据库访问层
使用Repository模式构建数据库访问层 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[二]——使用Repository模式构建数据库访问层 系列导航地址http:// ...
- Repository 设计模式介绍(转)
在DDD设计中大家都会使用Repository pattern来获取domain model所需要的数据. 1.什么事Repository? "A Repository mediates b ...
随机推荐
- Memcached总结三:Memcached常用命令及使用说明
一.存储命令 存储命令的格式: 1 2 <command name> <key> <flags> <exptime> <bytes> < ...
- lib-flexible 结合 WKWebView 的样式错乱解决方法
技术栈 lib-flexible 是淘宝的可伸缩方案 WKWebView 是ios8以上支持的网页控件 问题场景 最新公司一个项目使用 lib-flexible 来做移动端的伸缩解决方案,页面在saf ...
- 【HDOJ】2086 A1 = ?
数学题,首先推导出2*sum{c1,c2...cn} = (An+1-An) - (A1-A0),在将n个该式相加,可以推导出(n+1)*A1=An+1+n*A0-2*sum{sum{c1,c2... ...
- 【HDOJ】1262 寻找素数对
典型的二分决策树.而且本身两数和是偶数. #include <stdio.h> #include <string.h> #define MAXNUM 10001 int isP ...
- Hibernate包及相关工具包下载地址
Hibernate包及相关工具包下载地址: http://prdownloads.sourceforge.net/hibernate/ 这里包含所有hibernate各个版本的包下载,且提供了 Mid ...
- Linux Kernel ‘/bcm/Bcmchar.c’本地信息泄露漏洞
漏洞名称: Linux Kernel ‘/bcm/Bcmchar.c’本地信息泄露漏洞 CNNVD编号: CNNVD-201311-053 发布时间: 2013-11-06 更新时间: 2013-11 ...
- VM上成功安装mac os x
想必很多人在intel . AMD上安装苹果系统,总会遇到很多问题,今天我就将我成功安装的过程给大家分享一下. 下面是我在VM上安装的步骤: 1. 准备软件 OS X Snow Leopard 10. ...
- Oracle 12c创建用户时出现“ORA-65096: invalid common user or role name”的错误
这篇文章主要介绍CDB和PDB的基本管理,资料来源oracle官方. 基本概念: Multitenant Environment:多租户环境 CDB(Container Database):数据库容器 ...
- Java笔记(八)……数组
数组的概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 数组的格式 元素类型[] 数组名 = new 元素类型[个数]; int[ ...
- editpuls查找替换通配符
1 \t Tab character. tab符号 2 \n New line. 新的一行(换行符) 3 . Matches any ...