2010-09-28 75 views
2

有一個小小的BrainF ***問題讓我理解MVVM與LinqToSQL的關係。MVVM與LinqToSQL

的MVVM是建立這樣的:

查看 - >視圖模型 - >模型

觀點:XAML和隱藏文件的CS代碼。對 ?

視圖模型:由開發商(*的.cs)創建的,我的型號的封裝特性

型號:數據模型

因此,這裏的問題:

的LinqToSql給了我一個DBML文件,該文件包含來自我的數據庫的所有數據,那麼我可以使用它作爲模型?

我在哪裏以及如何在此架構中實現命令?

從數據庫獲取數據並填充視圖模型或模型的方法在哪裏? :-) 像GETCUSTOMER()

回答

1

它基本上是你的倉庫是作爲數據源,這是你寫你的方法,如:

public class CustomerRepository{ 
    private MyDataContext db = new MyDataContext(); 
    public Customer Find(id) 
    { 
     //Linq queries or Lambdas 
    } 

    public Customer Add(Customer _custoemr){} 

    public void save(){} 

    public IEnumerable<Customer> FindAll(){} 
} 

this question你可以找到一些有用的鏈接,可以幫助您瞭解存儲庫模式。

12

你問一堆問題在這裏,但讓我們來解決他們一次一個:

觀點:XAML和背後 文件CS代碼。對 ?

是的。或者,一般而言,僅涉及呈現數據的所有邏輯。示例:

  • 給出一個事情列表,視圖層決定它們是否顯示在下拉框或項目符號列表中。
  • 由視圖決定是否管理員的員工將他們的姓名用藍色表示。但直到決定員工是否爲經理的視角爲而非

的LinqToSql給了我一個DBML文件 其中包含從我 數據庫的所有數據,這樣我就可以用這個作爲 模型?

是的,你可以。在DBML文件下創建的LINQ-to-SQL類爲您提供了一個從數據庫模式構建的對象模型。您可以擴展這些對象(使用部分類或通過構建由它們組成的其他類)來添加驗證和其他業務邏輯。 Scott Guthrie gives us the low-down.

這些是您的ViewModel通常會封裝的類,添加和顯示與顯示數據的視圖相關的屬性。

我在哪裏以及如何在此架構中實現 命令?

Commands是在用戶界面和事件處理邏輯之間進行通信的鬆散耦合方式。所以你的ViewModels會將命令公開給視圖。您可以指定給定控件上的某個給定事件(如Button.Click)應該發出的命令,並且關聯的ViewModel處理其餘事件。

哪裏擺脫 數據的數據庫,並填補了視圖模型或 模型的方法呢? :-) like getCustomer()

這是存儲庫模式的用途。簡而言之:您構建一個Repository類,該類使用DBML文件中指定的DataContext向數據庫提交LINQ查詢並返回Model對象。您的ViewModels可以使用您的Repository類的實例來檢索它們將反過來呈現給您的Views的模型。

請注意我只列出了一些基礎知識,這當然不是使用您提到的廣泛模式的唯一方法。 Josh Smith已經寫了大量關於這些概念的材料。 WPF Apps With The Model-View-ViewModel Design Pattern將是一個很好的開始!

+0

我想我得到的基本理念與存儲庫類。因此,如果我有1個客戶,它返回我的CustomerModel的DataContext的 表對象。對於1桌全部清楚,但如果我有1個客戶由多個表組成 。我是否從版本庫構建並返回完成的ViewModel,或者我是否比存儲庫中的版本號爲 例如,我的Customer對於每個表中的4個表中存在一個函數,該函數返回客戶的表對象 ?在ViewModel中,這4個對象是handelt,ViewModel是在那裏構建的? – Marcus 2010-09-29 08:38:47