Repository模式

在Nopcommerce 2.8 的数据访问中使用了Repository这种模式。在百度上google了一下,发现这个模式在asp.net mvc里广泛使用着。
找了这么一段很精辟不过又看的不大懂的介绍:
 它是衔接数据映射层和域之间的一个纽带,作用相当于一个在内存中的域对象集合。客户端对象把查询的一些实体进行组合,并把它 们提交给Repository。对象能够从Repository中移除或者添加,就好比这些对象在一个Collection对象上就行数据操作,同时映射 层的代码会对应的从数据库中取出相应的数据。从概念上讲,Repository是把一个数据存储区的数据给封装成对象的集合并提供了对这些集合的操作

  我的理解是:

借助于泛型,封装了基本的增删改查,消灭了很多重复的代码。

比如有一个Customer表和一个Order表:

1 public class Customer{
2      public int Id{get;set;}
3      public string Name{get;set;}
4 }
5 public class Order{
6     public int Id{get;set;}
7 }

对应的Repository是:

 

 1 public interface ICustomerRepository{
 2      Customer GetById(int id);
 3      void AddCustomer(Customer cust);
 4      void Delete(int id);
 5       void Update(Customer cust);
 6       void QueryAll();
 7 }
 8 
 9 public interface IOrderRepository{
10      Order  GetById(int id);
11      void AddOrder(Order item);
12      void Delete(int id);
13       void Update(Order item);
14       void QueryAll();
15 }

于是我们发现了重复的代码,借助于泛型,Repository模式:

public interface IRepository{
T GetById(int id);
void Add(T item);
//省略代码
}

 

NopCommerce 2.8 中也是类似的结构:

在图中,IRepository定义增删改查,EfRespository去实现他们。

  

转载于:https://www.cnblogs.com/xinchuang/archive/2013/06/06/3121278.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值