2017-07-08 11 views
0

こんにちは私はEF PocoとDTOの関係を作成したいと考えています。ここ は、私はまた、このDTOEF6での参照データ

public class EMPLOYEELookUpData 
{ 
    public int EMPLOYEE_ID{ get; set; } 
    public string FULL_NAME{ get; set; } 
} 

を持って、私は私が唯一の従業員のIDを必要とする特定の選択のために、このDTOを使用しています私のアプリケーションでこれらの2つのエンティティ

public partial class RFID_TAG 
{ 
    public int TAG_ID { get; set; } 
    public string RFID { get; set; } 
    public Nullable<int> EMPLOYEE_ID{ get; set; } 

    public virtual EMPLOYEE EMPLOYEE{ get; set; } 
} 

public partial class EMPLOYEE 
{ 
    public int EMPLOYEE_ID{ get; set; } 
    public string FIRST_NAME{ get; set; } 
    public string LAST_NAME{ get; set; } 
    //ETC... 
} 

を持っている私の状況 です現在選択されているタグEMPLOYEEプロパティにバインドされたSelectedItemを持つRFIDとコンボボックスにバインドされているすべてのタグとテキストボックスを含むDataGridを含む新しいタグを追加できるCRUDビューがあります。

private async void GetData() 
    { 
     Data = await DbContext.RFID_TAG.Include(x => x.EMPLOYEE).ToListAsync(); 
     EmployeesList = await DbContext.MPLOYEE.Where(x => x.ACTIVE == 1) 
             .Select(x => new EMPLOYEELookUpData{EMPLOYEE_ID = x.EMPLOYEE_ID, FULL_NAME= x.FIRST_NAME + " " + x.LAST_NAME}) 
              .ToListAsync(); 
    } 

しかし、私はEFがEMPLOYEEにEMPLOYEELookUpDataを変換する方法を知っているように、EMPLOYEEとEMPLOYEELookUpDataとの関係を作る方法を見つけ出すことはできません。これは私がデータを選択しています方法です。

答えて

0

私はこのためにAutoMapperを使うことができると信じています:https://www.nuget.org/packages/AutoMapper/。 Nugetを使用してインストールできます。私は、コードをテストしていません

using (MyEntities myEntities = new MyEntities()) 
      { 
       List<EMPLOYEELookUpData> employeeLookupData; 
       try 
       { 
        employeeLookupData = myDB 
         .Employee 
         .Select(EMPLOYEELookUpData) 
         .Where(c => x => x.ACTIVE == 1) 
         .ToList(); 
       } 
       catch (InvalidOperationException e) 
       { 
        //Write a log entry 
       } 

コードは次のようになります。マッピングを作成して、EMPLOYEELookUpData .FullNameの特殊マッピングを作成する必要があります.FullNameはEMPLOYEE.FirstName + EMPLOYEE.Surnameに等しくなります。これを行う方法については、ドキュメントを読むか、ここに別の質問を投稿してください。

+0

これはどのようにEMPLOYEEにマップされますか? – oerkelens

+0

これはうまくいきますが、本当に必要なことがあるかどうかはわかりません。私はそれがDTOをエンティティに変換できないことがわかっています。基本的にDTOをコンボボックスにバインドし、コンボボックスのItemsSource = "{バインディングEmployeesList}" DisplayMemberPath = "FULL_NAME" SelectedItem = "{バインディングパス= SelectedItem.EMPLOYEE}"> EmployeeList = dtosのリスト SelectedItem = selected RFID_TAG(選択されたRFID_TAG from Data) SelectedItem.EMPLOYEE =選択したRFID_TAGの実際の従業員エンティティ(navプロパティ) – Aleksandar

関連する問題