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。