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模式介绍汇总的更多相关文章

  1. 分享基于Entity Framework的Repository模式设计(附源码)

    关于Repository模式,在这篇文章中有介绍,Entity Framework返回IEnumerable还是IQueryable? 这篇文章介绍的是使用Entity Framework实现的Rep ...

  2. Spark on YARN两种运行模式介绍

    本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发)   问题导读 1.Spark ...

  3. (转)MVC中的Repository模式

    1.首先创建一个空的MVC3应用程序,命名为MyRepository.Web,解决方案命名为MyRepository. 2.添加一个类库项目,命名为MyRepository.DAL,添加一个文件夹命名 ...

  4. 探究Repository模式的两种写法与疑惑

    现如今DDD越来越流行,园子里漫天都是介绍关于它的文章.说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式. 很多时候我们对Repository都还停留在Copy然后使用的阶段, ...

  5. Laravel Repository 模式

    Repository 模式 为了保持代码的整洁性和可读性,使用Repository Pattern 是非常有用的.事实上,我们也不必仅仅为了使用这个特别的设计模式去使用Laravel,然而在下面的场景 ...

  6. Repository模式

    Repository模式的两种写法与疑惑 现如今DDD越来越流行,园子里漫天都是介绍关于它的文章.说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式. 很多时候我们对Reposit ...

  7. MVC中的Repository模式

    1.首先创建一个空的MVC3应用程序,命名为MyRepository.Web,解决方案命名为MyRepository. 2.添加一个类库项目,命名为MyRepository.DAL,添加一个文件夹命名 ...

  8. 使用Repository模式构建数据库访问层

    使用Repository模式构建数据库访问层 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[二]——使用Repository模式构建数据库访问层 系列导航地址http:// ...

  9. Repository 设计模式介绍(转)

    在DDD设计中大家都会使用Repository pattern来获取domain model所需要的数据. 1.什么事Repository? "A Repository mediates b ...

随机推荐

  1. nginx Location配置总结(转)

    本文部分转自:http://cssor.com/nginx-location-configuration.html 一. 开头 语法规则: location [=|~|~*|^~] /uri/ { … ...

  2. cocos2d-html5 Layer 和 Scene 创建模式

    var myLayer = cc.Layer.extend({ init:function() {//2 界面 var bRet = false; if (this._super()) { bRet ...

  3. ANDROID_MARS学习笔记_S01原始版_023_MP3PLAYER005_用广播BroacastReciever实现后台播放不更新歌词

    一.代码流程1.自定义一个AppConstant.LRC_MESSAGE_ACTION字符串表示广播"更新歌词" 2.在PlayerActivity的onResume()注册Bro ...

  4. ArcGis 在线地图相关资源

    原文:ArcGis 在线地图相关资源 世界边界和地点:http://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Bou ...

  5. spring cloud官方文档提到的服务开发的12项要素。

    I. Codebase 从一个代码库部署到多个环境. II. Dependencies 使用显式的声明隔离依赖,即模块单独运行,并可以显式管理依赖. III. Config 在系统外部存储配置信息. ...

  6. Rails 撤销操作

    即使再小心,在开发 Rails 应用程序过程中仍然可能犯错.幸运的是,Rails 提供了一些工具能够帮助你进行复原. 举例来说,一个常见的情况是,你想更改控制器的名字,这时你就要撤销生成的代码.生成控 ...

  7. 【HDOJ】2295 Radar

    DLX+二分. /* 2295 */ #include <iostream> #include <string> #include <map> #include & ...

  8. bzoj1922

    首先机器人是并行的: 很容易想到到某个点的最短用时 =max(到这个点的最短路,max(到保护这个点结界所在点的最短用时)) 所以我们在做dij的时候,d[j]维护最短路,w[j]维护所有保护这个点结 ...

  9. epub格式电子书剖析之三:NCX文件构成

    ncx文件是epub电子书的又一个核心文件,用于制作电子书的目录,其文件的命名通常为toc.ncx. ncx文件是一个XML文件,该标准由DAISY Consortium发布(参见http://www ...

  10. VS2012启用SQLite的Data Provider

    VS 2012默认是不带的SQLite的Data Provider,所以无法直接在VS 2012里管理SQLite的数据库,自然也不能在VS里像SQL Server那样直接生成Entity Frame ...