C# 使用EF6查找数据
您好,我想创建EF Poco和DTO之间的关系。 这是我的情况 我的应用程序中有这两个实体C# 使用EF6查找数据,c#,wpf,entity-framework,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;
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用于特定的选择,其中我只需要员工id和姓名,我有CRUD视图,用户可以在其中添加新标签,它包含datagrid,其中包含所有标签和绑定到当前所选标签的文本框RFID和已选择EdItem绑定到当前所选标签的combobox员工属性。这就是我选择数据的方式:
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和EmployeeLookUpdatea之间的关系,以便EF知道如何将EmployeeLookUpdatea转换为EMPLOYEE 我相信您可以使用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
}
使用(MyEntities MyEntities=new MyEntities())
{
列出雇员名单a;
尝试
{
EmployeeLookUpdatea=myDB
.雇员
.选择(EmployeeLookUpdatea)
.其中(c=>x=>x.ACTIVE==1)
.ToList();
}
捕获(无效操作异常)
{
//写一个日志条目
}
我尚未测试代码。您必须为EmployeeLookUpdatea.FullName创建映射和特殊映射,因为它等于EMPLOYEE.FirstName+EMPLOYEE.姓氏。您可以通过阅读文档或在此处发布另一个问题来了解如何执行此操作。这如何将任何内容映射到EMPLOYEE?这很好,但是我不确定这是否是我真正需要的东西,因为据我所知,我无法将DTO转换回实体,基本上我想将DTO绑定到combobox,让用户为标签选择employee,下面是我的combobox绑定:EmployeeList=DTO列表SelectedItem=所选RFID\ U标签(来自数据)在网格中,SelectedItem.EMPLOYEE=所选RFID_标签中的实际员工实体(nav属性)
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
}