[英]EF Core relation without foreign key
目前我有一个问题,我使用线性数据库,即它没有外键,表仅通过 id 字段关联,您必须在数据库中进行查询以将表与连接连接并获得结果,在 mysql 数据库中,它运行良好,因为它们只是查询,但是使用 Entity Framework 是问题出现的地方,我有一个员工表和一个人员表,它们由 PersonId 相关,因此使用 linq Z240AA2I want2029C56FABEEZ 查询,获取包含此人信息的员工列表,因此我会执行以下操作:
var empleados = context.Empleados.Include(x => x.Personas).ToList();
但由于它们在数据库级别与外键无关,EF 不允许我使用包含。
然后尝试这样的事情:
var queryable = from e in context.Empleados
join p in context.Personas
on e.Idpersona equals p.Idpersona
select new { e, p };
但它是一种匿名类型,我不知道如何将其 map 到员工列表中,也尝试这样做:
var queryable = from e in context.Empleados
join p in context.Personas
on e.Idpersona equals p.Idpersona
select new Empleado
{ Noemp = e.Noemp,
Nombre = p.Nombre
};
但是员工没有人员属性,这给了我一个错误。
最后,我尝试使用 dto,但我不想在包含解决问题时为我必须关联的每个表执行 dto
List<Empleado> listadeempleados = new List<Empleado>();
var personas = await context.Personas.ToListAsync();
foreach(var item in personas)
{
var empleado = await context.Empleados.Where(x => x.Idpersona == item.Idpersona).FirstOrDefaultAsync();
listadeempleados.Add(empleado);
}
var model = new EmpleadoPersonaListDTO();
model.ListaEmpleados = listadeempleados;
model.ListaPersonas = personas;
我找不到如何使用与外键无关的实体框架和表,我知道我应该有键,但这就是数据库的制作方式,我无法更改它
您不需要数据库中的外键来在 EF 中声明导航属性。 只需创建 EF model 就好像外键在那里一样。 当然,不要使用 Migrations 更新数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.