仓储和工作单元模式是用来在数据访问层和业务逻辑层之间创建一个抽象层。
应用这些模式,可以帮助用来隔离你的程序在数据存储变化。

在数据源层和业务层之间增加一个repository层进行协调,有如下作用:
1.从数据源中查询数据
2.映射数据到业务实体
3.将业务实体数据的修改保存到数据源 (持久化数据)
这样repository就将业务逻辑和基础数据源的交互进行了分隔。

数据和业务层的分离有如下三个优点:
1.集中管理不同的底层数据源逻辑。
2.给单元测试提供分离点。
3.提供弹性架构,整体设计可以适应程序的不断进化。

我们使用 generic repository去除冗余代码
使用unit of work保证所有repositories使用同一个 context

在Byteart

Retail案例中,仓储接口定义在ByteartRetail.Domain程序集中,而仓储的实现部分则写在了ByteartRetail.Domain.Repositories程序集中,以下是Visual
Studio
2012中解决方案资源管理器下的项目结构,我用数字对四个主要部分做了标注:1、领域层的所有内容都定义在ByteartRetail.Domain程序集中;2、在该程序集的Repositories目录(命名空间)下,定义了仓储的接口(事实上还包含了仓储上下文的接口定义);3、仓储的具体实现部分写在了ByteartRetail.Domain.Repositories程序集中,该程序集引用了ByteartRetail.Domain程序集;4、在ByteartRetail.Domain.Repositories程序集中提供了针对Entity
Framework的仓储实现。

内容来源:
http://www.cnblogs.com/kevin2013/p/5239195.html
http://www.cnblogs.com/daxnet/archive/2013/04/24/3040542.html#top

最新文章

  1. Linux httpd源码编译安装
  2. 修改sql数据库文件 物理文件名称
  3. 2016 、12 、11<本周>
  4. easyui 中datagrid 点击行的事件
  5. HTTP学习笔记(1)ULR语法
  6. 【Gym 100733D】Little thief Shi
  7. 【BZOJ-2223】PATULJCI 可持久化线段树
  8. hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)
  9. python中self,cls
  10. C# GUID的使用
  11. 如何通过Android Studio发布library到jCenter和Maven Central
  12. SQLite的查询
  13. [转]解决VS2008 开发Windows Mobile 项目生成速度慢的问题
  14. Ubuntu gitlab安装文档及邮件通知提醒配置
  15. jQuery 操作Cookie
  16. Android Bitmap操作问题之Canvas: trying to use a recycled bitmap
  17. 内置函数二(lambda函数,sorted(),filter(),map(),递归函数,二分法查找)
  18. mysql week 的使用方法
  19. Python SSH爆破以及Python3线程池控制线程数
  20. django基础操作

热门文章

  1. Qt串口通信专题教程
  2. 复杂sql语句集锦
  3. JVM | JVM的核心技术
  4. 如何解决AndroidStudio下载资源慢的问题
  5. Go项目的测试代码1(基础)
  6. LC 900. RLE Iterator
  7. sparkstreaming的状态计算-updateStateByKey源码
  8. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计
  9. Jmeter: PATCH方法无法发送参数的暂时解决方法
  10. Python--多任务(多进程,多线程,协程)