2016-03-30 6 views
0

Visual Studio 2015でWPF MVVM Lightアプリケーションを構築しています。これは、Entity Framework 6を​​データベースファーストモデル生成で使用しています。ビュー(ユーザーコントロール)で使用するモデルのView Modelクラスを作成しています。ViewModelオブジェクトへのEntity Frameworkナビゲーションプロパティのマッピング

私は次の3つのEFモデルを持っています。 EmployeeEmployeeStatuEmployeeStatuは( 'Leave of Absence'、 'Archived'など)モデルを持っています。ValidEmployeeStatuモデルでは、従ってemployeeIDEmployeeStatuのFKであり、validEmployeeStatusIDEmployeeStatuのFKです(ValidEmployeeStatuのPK)。

私の従業員向けのView Modelは次のとおりです。他の人が同じパターンに従う:

public class EmployeeViewModel : ViewModelBase 
{ 
    private int _employeeId; 
    private string _securityId; 
    private IEnumerable<EmployeeStatusViewModel> _employeeStatus; 

    public EmployeeViewModel() 
    { 
     this.EmployeeStatusVMs = new HashSet<EmployeeStatusViewModel>(); 
    } 

    public IEnumerable<EmployeeStatusViewModel> EmployeeStatusVMs 
    { 
     get { return _employeeStatus; } 
     set 
     { 
      if (_employeeStatus.Equals(value)) return; 
      _employeeStatus = value; 
      RaisePropertyChanged(); 
     } 
    } 

    // More properties here... 
} 

を私は、データをフェッチするために、このLINQクエリを使用しています:

var query = (from e in Context.Employees 
      .Include("EmployeeStatus.ValidEmployeeStatu") 
      .Where(comparison) 
      select new EmployeeViewModel 
      { 
       employeeID = e.employeeID, 
       securityID = e.securityID, 
       firstName = e.firstName, 
       middleName = e.middleName, 
       lastName = e.lastName, 
       suffix = e.suffix, 
       job = e.job, 
       organizationalUnit = e.organizationalUnit, 
       costCenter = e.costCenter, 
       notes = e.notes, 
       createdDate = e.createdDate 
      }); 

私は私のビューモデルにナビゲーションプロパティEmployeeStatuValidEmployeeStatuをマッピングする方法を教えてください。そして、SaveChanges()のView Modelオブジェクトからモデルに値を戻すにはどうしたらいいですか?ありがとうございました。

答えて

1

第1レベルのモデルと同じようにする必要があります。マッピングの同じ種類をモデル化するために戻って移動するときは

employeeStatus = e.EmployeeStatus.Select(s=>new EmployeeStatusViewModel{...}.ToList() 

をしかしViewModelにからモデルへ:だからEmployeeViewModelのあなたの創造の内側にかなっ好きです。 また、オートマッペアをチェックアウトすることもできます。ブログを検索します。

+0

ありがとう、@jstadnicki。それは完璧な意味合いがあります。 VMからModelにデータを戻す場合と同様のサンプルラインがありますか?何とか私はAutomapperに関する良い文書を見つけることができませんでした。リンクの多くは廃止予定のメソッドのコードを持っていました。 – Alex

+0

オートマッパを検索します。これを手で行う必要はないことがわかります。基本的には、マッピング1-1は両方とも自動的に行われます。 – jstadnicki

+0

私がそれを理解していれば私はAutomapperを使いたいと思っています、@jstadnicki :)見つけたリンクには初心者向けのガイドがいくつかありましたが、完全ではありませんでした。メインサイトの「Getting Started」は、私のようなnoobのためにはあまり役に立たなかった! Automapperの構文であなたが上に書いたものを見たいと思います。 – Alex

関連する問題