2016-11-07 48 views
2

使用MVVM Light和Entity框架的最佳方式是什麼?使用實體框架的WPF MVVM Light Toolbox簡單的LINQ

  1. 我是創建MVVM Light項目。
  2. 我是添加實體數據庫模型文件夾。 (DB.edmx)
  3. 我被添加到MainWindow.xaml DataGrid和文本框。
  4. 下一步如何顯示文本框中的用戶名或DataGrid中的所有數據? 我需要添加這個邏輯嗎? dc.Employees.FirstOrDefault(s => s.EmployeesId == employeesId);dc.Employees() 我需要使用「Model」或「Modelview」文件夾來添加我的邏輯?

我發現了一些教程,但有太多困難的邏輯2時間需要創建GetEmployees和ect。 http://www.dotnetcurry.com/wpf/1037/mvvm-light-wpf-model-view-viewmodel http://dotnetpattern.com/mvvm-light-toolkit-example

回答

1

ViewModel文件夾中你將有一個類EmployeeViewModel。這是您需要構建的內容,並且您不關心數據來自哪裏。

所以你可以有另一個類(EmployeeDataService)創建EmployeeViewModel。這是一箇中介類,既不屬於ViewModel,也不屬於Model文件夾。你可以把它放在一個文件夾裏,比如'DataServices'。

在模型中,你可以有一個返回員工的方法:

public Employee GetEmployee(){ 
    ...   
     return dc.Employees.FirstOrDefault(s => s.EmployeesId == employeesId); 
    ... 
    } 

然後,在DataServices\EmployeeDataService.cs你可以有:

public EmployeeViewModel GetEmployeeViewModel(id){ 
    Employee employeeModel = ModelClass.GetEmployee(id); 
    EmployeeViewModel employeeVm = ' ..code to build an EmployeeViewModel from employeeModel 
    return employeeVm; 
} 
+0

所以說:'DB'>'實體Framework'>'型號'(GetEmployee())>'DataServices'(GetEmployeeViewModel(id))>'ViewModel'(GetEmployee)>'View'(DataGrid)?你提供像在教程中的第一個鏈接嗎?他們創建「服務」文件夾。我是否需要在模型中創建GetEmployee,是不是Entity EDMF的呢? – Alex

+0

是的,你說得對:爲了保持ViewModel和Model不同,你需要第三個組件('Service'類)來中繼兩者之間的通話。這樣,您可以安全地修改模型的實現而不影響ViewModel(反之亦然)。 – Andy