2012-10-21 127 views
0

我已經開始在一個項目中使用EF和LINQ,並試圖決定使用最佳方法/模式。到目前爲止,我一直在使用基於DataSets和XML配置的自定義持久性框架。基本上它是一個VS自定義工具,它將讀取XML配置文件和數據集,並將生成具有所有必要屬性/關聯/方法的面向對象類。這個自動生成的類然後在UI中使用,並且我可以靈活地只公開UI需要的東西。實體框架,LINQ和模式

現在使用EF和LINQ,我不熟悉UI可以直接使用自動生成的類和所有LINQ的東西。看來這種方法在UI和數據庫之間會有非常緊密的整合。

所以我正在尋找一些能夠「隱藏」所有EF和LINQ的好東西,基本上限制了UI可以做什麼的模式。有沒有標準的方法來做到這一點?

回答

0

您要查找的模式通常是Model-View-ViewModel或MVVM。

這裏,似乎打在設計模式的高點教程:http://csharperimage.jeremylikness.com/2010/04/model-view-viewmodel-mvvm-explained.html

+0

MVVM與您的UI分離數據層無關。這是一種類似於MVC的UI模式,但用ViewModel取代了Controller。更重要的是觀察數據更改並將這些更改複製到其他觀察者。你通常只會在Silverlight或WPF(有時是javascript)中使用MVVM ..它在這個問題的上下文中沒有意義。 –

+0

至少我對它的理解,MVVM與分離你的UI和你的模型(無論你的模型是直接來自數據庫,在這種情況下,還是來自服務調用或XML文檔等)有關。您的UI不知道ViewModel背後的實際模型。 ViewModel是你的UI必須關心的唯一事情。我認爲這將是他在這種情況下遵循的適當模式。 – Thebigcheeze

+0

這是不正確的。 ViewModel仍然是UI的一部分。它只是把責任分成它自己的組件。該模型對UI非常瞭解(它必須是,否則UI將無法訪問它)。您可以將MVVM中的ViewModel視爲您的數據模型的「緩存」,實際的數據訪問應該在不同的層或層中完成。 –

1

什麼你要找的是一個n層應用程序。它不像建築一樣是一種模式。您可以將應用分成兩部分或更多部分,通常由用戶界面,業務和數據組成。您可以通過其他模式(如Facade或Repository模式)來實現此目的,以保持關注的強烈分離。

您也可以使用服務層,它可以由門面或作爲Web服務來實現。

你會,理想情況下,通過所謂的DTO的或數據傳輸對象對象的數據,你可能在你的UI使用視圖模型適應這些DTO的(不與其他海報錯誤地提到MVVM混淆。)

除此之外,其中大部分取決於您正在建立的應用類型。桌面應用程序,服務器應用程序,網絡應用程序等。