您好我想创建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。
答案 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。您可以通过阅读文档或在此处发布其他问题来了解如何执行此操作。