審查Conery的店面,我不明白他爲什麼使用Linqs自動生成的類(即Order類),然後他有另一個定義的類不是部分類。什麼時候使用存儲庫模式應該手動創建類,並完全忽略Datacontext?MVC倉庫模式:創建模型類
回答
如果你沒有使用中間類來分離你的前端和linq類,那麼你就無法控制數據上下文被垃圾收集。通常情況下,只要您完成了使用它們,您想立即刪除它們的實例的數據上下文類型。這裏是你會如何想用LINQ to SQL的情況下做到這一點:
using (MyDataContext data = new MyDataContext())
{
SomeThing thing = data.Things(t => t.ID == 1);
return thing;
}
... the MyDataContext instance is gone
隨着「使用」塊,你處置MYDataContext在最後的「}」的實例。但是,如果你這樣做,你會得到一個錯誤,然後嘗試使用「東西」,因爲數據上下文實例已經消失。如果你不要處理數據上下文,它會一直掛起,直到它最終被垃圾收集。
如果你介紹的中介類從你仍然可以擺脫你的數據上下文實例調用應用解耦的LINQ to SQL代碼,並返回相同的數據(只是在不同的對象):
using (MyDataContext data = new MyDataContext())
{
SomeThing thing = data.Things(t => t.ID == 1);
SometThingElse otherThing = ConvertSomethingToSomethingElse(thing);
return otherThing;
}
... the MyDataContext instance is gone
希望有所幫助。
他在他最近的一個視頻中說他不喜歡LINQ to SQL映射的方式。我同意,但我認爲這是完全矯枉過正。
我想說,只要你堅持存儲庫模式本身,你不會破壞任何主要的設計模式。我認爲有兩組classa是可以選擇的,儘管它們是不好的,但仍然是一個選擇。
Rob在他的一個節目中回答了這個問題。
他使用POCO類從所有數據訪問類中獲知。例如,當他將LINQ-to-SQL更改爲NHibernate時,他將需要在他的過濾器中更改他的「映射」,並且他不需要對商務邏輯進行任何更改。
恰到好處。這是鬆散地將數據層耦合到網站的其他部分。所以當他想放棄L2S並用Subtext或其他東西替換它時,他只修改一個項目,而不是多個項目。 – 2009-01-14 00:52:02
- 1. 從數據倉庫中的星型模式創建視圖
- 2. MVC倉庫 - 域模型vs實體模型
- 3. MVC倉庫模式 - 訪問其他倉庫
- 4. 數據倉庫 - 星型模式解釋
- 5. 爲MVC創建模型
- 6. ASP.NET MVC 5.0模型類 - 如何在模型類中創建屬性但不創建數據庫字段
- 7. NHibernate的倉庫模式
- 8. C中的倉庫模式#
- 9. EF倉庫模式與ChangeTracker
- 10. 創建模式類型Scala中
- 11. 通用類型倉庫模式的Autofac XML/JSON配置
- 12. 我應該如何創建模型類來調用API(使用MVC模式)?
- 13. 創建一個模型類
- 14. 創建模型的子類
- 15. 爲XML創建模型類
- 16. 創建數據庫模式
- 17. Laravel,創建模式和模型
- 18. 使用MySQL Workbench從現有模式/模型創建數據庫
- 19. 從應用程序模型創建數據庫模式與否?
- 20. 如何爲HttpPostedFileBase類型創建MVC模型?
- 21. 創建xsd模式創建類
- 22. 從enitity db類創建MVC模型類的最簡單方法
- 23. 如何在大型數據倉庫中爲發票創建數據模型?
- 24. 使用類庫和MVC模型
- 25. Laravel使用具有模式的表創建模型類
- 26. C#MVC動態創建視圖模型
- 27. Mvc 4 CodeFirst模型創建器外鍵
- 28. MVC 3 ViewModel創建方法模型
- 29. 在Spring MVC中動態創建模型
- 30. ASP.Net MVC創建視圖多模型
根據到目前爲止的答案,他似乎將LINQtoSQL用作傳輸的中間對象,這與人們使用XML作爲中間步驟的方式相同,因爲他們不確定連接的哪一端是什麼。 – Soviut 2009-01-10 07:21:17