2011-03-27 51 views
3

我目前在C#中創建一個WPF應用程序,並且一直關注此diagram。我已經閱讀了MVVM上的幾篇文章,但是我特別在虛線框下面尋找所有細節(所以模型和數據訪問)。我已經有一個本地數據庫設置(SQLite),我正在尋找一種將它連接到我的應用程序的有效方式。MVVM - 模型教程?

是否有創造MVVM這個特定部分的任何好的文章或演示?

+0

是否有某些原因導致您刪除了我已經回答過的問題? – 2011-03-27 21:47:57

+0

@馬丁:我只是想改寫它,並注重使用MVVM – Ace 2011-03-27 21:51:47

+4

的。當一個問題是措辭不當,常見的做法是隻「編輯」它,而不是刪除並重新發布。 – luiscubal 2011-03-27 21:53:49

回答

5

有很多方法可以解決這個問題,你選擇哪一個將通過您的應用程序和數據模型的複雜程度來決定。

,以從一個.NET點接近,這將是對你的SQLite數據庫之上建立一個實體框架模型的標準方法。這將生成您的對象模型,並允許您將行爲附加到它上,而不用大驚小怪。它也從應用程序代碼(ViewModels)中抽象出數據庫/持久性。有關此方法的詳細信息,請在Google上搜索「實體框架」 - 此處有大量信息。自EF 4.0發佈以來,EF顯着提升。

如果你不想去與EF(由於複雜性,開銷或者只是推出自己的慾望),那麼你將要流行的數據源架構模式閱讀起來。從Martin Fowler的Patterns of Enterprise Application Architecture開始 - 本書是數據驅動應用程序體系結構的聖經。如果你不想購買這本書,那麼請仔細閱讀模式描述,找到合適的模型並進行Google搜索 - 網絡上有大量有關這些內容的信息。

如果你有一個行爲的負載和圖案複雜的模型,那麼你會想看看你的模型,並可能用於獲取數據從你的數據庫和你的模型Data Mapper數據源模式Domain Model模式。這是最複雜的方法,但如果需要的話,複雜性會帶來靈活性。

如果您的數據模型更簡單,那麼你可能要爲使用Table Data GatewayRow Data Gateway進行數據訪問和可能Transaction ScriptService Layer的模型和數據庫之間的通信。

我的主要轟炸你的鏈接道歉,但現實的情況是在一個架構決定了應用程序做大量的研究是非常重要和首先學習和依賴於已知的解決方案的時候。祝你好運。

+0

我欣賞這些鏈接雖然我覺得關於這個問題的水平即教程。最簡單的模式是最好的,他可以從那裏建立它。 – BastanteCaro 2011-04-05 14:22:00

3

鏈接到的圖比MVVM稍微複雜一些。 MVVM只引用Model,View和ViewModel。它將數據訪問策略留給程序員。我使用MVVM,但我不喜歡我的Model類包含從數據訪問層加載數據的邏輯(實際上,我不喜歡Model類通過INotifyPropertyChanged包含除了更新通知以外的任何編程邏輯)。

我使用目前的模式有一個名爲庫的其他程序包。 ViewModel調用存儲庫,告訴它獲取數據。然後存儲庫從數據庫(或Web服務或文件系統等)獲取數據並填充模型對象。 ViewModel正在觀察Model對象,所以更改會傳播到UI。

enter image description here

+0

是的,這看起來相當有條理。你知道我在哪裏可以找到使用這種模式的* Good *教程嗎? – Ace 2011-03-29 04:00:10

+0

王牌:對不起,我找不到任何好的。 – 2011-03-30 22:27:13