使用EF6查找数据

时间:2017-07-08 16:33:51

标签: c# wpf entity-framework

您好我想创建EF Poco和DTO之间的关系。 这是我的情况 我的应用程序中有这两个实体

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...
}

我也有这个DTO

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

我使用此DTO进行特定选择,我只需要EMPLOYEE的ID和名称,我已经获得了CRUD视图,其中用户可以添加包含datagrid的新标签,其中包含所有标签和绑定到当前所选标签的文本框RFID和组合框,其中SelectedItem绑定到当前选定的标签EMPLOYEE属性。这就是我选择数据的方式:

    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();
    }

但我无法弄清楚如何在EMPLOYEE和EMPLOYEELookUpData之间建立关系,以便EF知道如何将EMPLOYEELookUpData转换为EMPLOYEE。

1 个答案:

答案 0 :(得分: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,因为它等于EMPLOYEE.FirstName + EMPLOYEE.Surname。您可以通过阅读文档或在此处发布其他问题来了解如何执行此操作。