2016-11-07 13 views
2

MVVM LightおよびEntityフレームワークを使用する最良の方法は何ですか?WPF MVVM Light Toolbox with EntityフレームワークC#単純なlinq

  1. MVVM Lightプロジェクトを作成しました。
  2. モデルフォルダにエンティティDBを追加しました。 (DB.edmx)
  3. MainWindow.xaml DataGridとtextboxに追加されました。
  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を持っているでしょう。これはあなたが構築する必要があるものであり、そのデータがどこから来るかは気にしません。

したがって、EmployeeViewModelを作成する別のクラス(EmployeeDataService)を持つことができます。これは中間クラスであり、いずれも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)ですか?チュートリアルの第1リンクのようにあなたは提供していますか?彼らは 'Service'フォルダを作成します。モデルでGetEmployeeを作成する必要がありましたか、エンティティEDMFではありませんか? – Alex

+0

はい、正しいと思います:ViewModelとモデルを別々に保つために、2つの間で呼び出しをリレーする3番目のコンポーネント( 'Service'クラス)が必要です。そうすれば、ViewModelに影響を与えずにモデルの実装を安全に変更できます(逆も同様です)。 – Andy

関連する問題