Asp.net
使用儲存庫模式的 ASP.NET MVC
目前我正在使用 EF 並在我的所有操作中直接使用其數據上下文,但是自從我開始閱讀有關鬆散耦合和可測試性的內容後,我認為這不是最好的方法。在我開始重構我目前的所有程式碼之前,我試圖了解所有的優點和缺點。
問題 1: 考慮到每個實體都需要自己的儲存庫,因此必須設置自己與數據源的連接(假設使用 EF 的數據庫),如果我需要來自單個頁面上 5 個不同實體的數據,這不會產生很多成本?
問題 2: 我在網上找到的所有範例中也看到的是,大多數人(甚至像 shanselman 這樣的人)使用由 LINQ 或 EF 生成的實體類來實現儲存庫模式,這是否違背了關於鬆散耦合的儲存庫模式?另一方面,還有什麼替代方法,將 POCO 類與 AutoMapper 結合使用?(這讓我有點害怕)
我希望一些人可以對此有所了解,因為目前我有點困惑儲存庫模式是否是網站的正確選擇。
你可以讀這本書。有一個使用儲存庫模式和 LINQ 的好例子。
還有這篇文章Using Repository and Unit of Work patterns with Entity Framework 4.0。
ObjectContext 使用連接池,因此它不會像您想像的那樣低效。此外,SQL 伺服器(即 MSSQL)確實針對大量並發連接進行了優化。
至於如何實現它,我會使用一些 IRepository 介面。然後,您可以創建特定的介面,即 PostRepository > IRepository,最後,在具體的類中實現它(例如,一個真實的類和一個用於測試的假記憶體類)。