我正在尝试查询activo
(资产)的相关数据
资产可以具有类型和类别
我无法为Linq创建以下SQL查询
端点
[HttpGet]
[Route("buscarid/{id}", Name = "BuscarPorID")]
public async Task<ActionResult<DtoLecturaActivo>> BuscarPorID(int id)
{
try
{
var activo = await context.Activos
.Include(x => x.IdActivoTipoCategoriaNavigation)
.FirstOrDefaultAsync(activo => activo.Id == id);
if (activo == null)
{
return NotFound();
}
DtoLecturaActivo dtoActivo = mapper.Map<DtoLecturaActivo>(activo);
return Ok(dtoActivo);
}
catch (Exception ex)
{
throw new Exception("Something wrong happened in the Activo-buscarPorID:", ex);
}
}
资产模型类:
using System;
using System.Collections.Generic;
namespace API.Models
{
public partial class Activo
{
public Activo()
{
Historials = new HashSet<Historial>();
}
public int Id { get; set; }
public int? IdInformacion { get; set; }
public int? IdDepartamento { get; set; }
public int? IdUnidad { get; set; }
public int? IdLocalidad { get; set; }
public int? IdActivoTipoCategoria { get; set; }
...
public virtual ActivoTipoCategorium IdActivoTipoCategoriaNavigation { get; set; }
public virtual Departamento IdDepartamentoNavigation { get; set; }
public virtual Informacion IdInformacionNavigation { get; set; }
public virtual Localidad IdLocalidadNavigation { get; set; }
public virtual Unidad IdUnidadNavigation { get; set; }
public virtual ICollection<Historial> Historials { get; set; }
}
}
模型资产类别:
namespace API.Models
{
public partial class ActivoTipoCategorium
{
public ActivoTipoCategorium()
{
Activos = new HashSet<Activo>();
}
public int Id { get; set; }
public int? IdActivoTipo { get; set; }
public string Nombre { get; set; }
public virtual ActivoTipo IdActivoTipoNavigation { get; set; }
public virtual ICollection<Activo> Activos { get; set; }
}
}
模型资产类型:
namespace API.Models
{
public partial class ActivoTipo
{
public ActivoTipo()
{
ActivoTipoCategoria = new HashSet<ActivoTipoCategorium>();
}
public int Id { get; set; }
public string Nombre { get; set; }
public DateTime? FechaCreacion { get; set; }
public virtual ICollection<ActivoTipoCategorium> ActivoTipoCategoria { get; set; }
}
}
资产DTO:
namespace API.Dtos
{
public class DtoLecturaActivo
{
public int Id { get; set; }
public int? IdInformacion { get; set; }
public int? IdDepartamento { get; set; }
public int? IdUnidad { get; set; }
public int? IdLocalidad { get; set; }
public int? IdActivoTipo { get; set; }
public int? IdActivoTipoCategoria { get; set; }
public long? IdCodigo { get; set; }
public string Marca { get; set; }
public string Color { get; set; }
public string Modelo { get; set; }
public string Componentes { get; set; }
public string Serial { get; set; }
public bool? Condicion { get; set; }
public string Observaciones { get; set; }
public DateTime? FechaCreacion { get; set; }
public DtoLecturaActivoTipo Tipo { get; set; }
public DtoLecturaActivoTipoCategorium Categoria { get; set; }
}
}
自动Map器配置文件
namespace API.AutomapperProfiles
{
public class AutomapperProfiles : Profile
{
public AutomapperProfiles()
{
// Lectura <ModeloOrigen, ModeloDestino>
CreateMap<Activo, DtoLecturaActivo>();
CreateMap<DtoLecturaActivo, Activo>();
CreateMap<Informacion, DtoLecturaInformacion>();
CreateMap<Departamento, DtoLecturaDepartamento>();
CreateMap<Unidad, DtoLecturaUnidad>();
CreateMap<Localidad, DtoLecturaLocalidad>();
CreateMap<ActivoTipo, DtoLecturaActivoTipo>();
CreateMap<ActivoTipoCategorium, DtoLecturaActivoTipoCategorium>();
// Escritura
CreateMap<DtoEscrituraActivo, Activo>();
// Actualizar
CreateMap<DtoActualizarActivo, Activo>();
}
}
}
SQL查询(预期结果)
SELECT
activo.Id, tipo.Id AS 'id_Tipo', tipo.Nombre,
activo.IdActivoTipoCategoria AS 'id_categoria',
categoria.Nombre
FROM
SWF.Inventario.Activo AS activo
JOIN
SWF.Inventario.ActivoTipoCategoria categoria ON categoria.Id = activo.IdActivoTipoCategoria
JOIN
SWF.Inventario.ActivoTipo tipo ON tipo.Id = categoria.IdActivoTipo
WHERE
activo.Id = 300
指令集
1条答案
按热度按时间rsaldnfx1#
由于您没有使用自动Map器的
ForMember
或ForPath
方法,因此默认情况下只Map名称匹配的字段。根据您提供的信息,我认为一个Map应该是