Cómo utilizar la consulta SQL con pivot() en EntityFramework Core 5.0
SELECT BuildingID,
BuildingName,
[-1] AS 'In Active',
[0] 'Booked',
[1] 'Occupied',
[2] 'Vacant',
[3] 'Temporary Booked',
[4] 'Under Clearance',
[5] 'Under Construction',
[6] 'Reserved',
[7] 'Temporary Leased',
[8] 'Paid Booked',
[9] 'Booking Payment Pending',
Total=(SELECT Sum(TB.total_count)
FROM (VALUES([-1]),([0]),([1]),([2]),([3]),([4]),([5]),([6]),([7]),([8]),([9])) AS TB(total_count))
FROM (SELECT b.buildingid,
b.BuildingName,
f.FacStatusID,
f.FacilityNo
FROM Facility AS f
INNER JOIN FacilityBuilding b
ON f.BuildingID = b.BuildingID
WHERE FacilityTypeID =1
AND FacilitySubTypeID = @facilitySubTypeId and f.BuildingID=@buildingId) AS SourceTable
PIVOT ( Count(FacilityNo)
FOR FacStatusId IN ([-1],[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]) ) AS pivottable
ORDER BY BuildingID;
Necesito convertir esta consulta a Entity Framework o utilizar este procedimiento almacenado allí. No tengo ninguna entidad en mi contexto de base de datos relacionada con este resultado. Pero tengo entidades separadas como facilities y facilityBuildings donde buildingId es la clave principal y sirve como clave externa en la tabla de facilities.
También adjunté la captura de pantalla del resultado deseado.
Por favor, ayúdeme con cómo podemos utilizar esta consulta para obtener el resultado adjunto deseado utilizando Entity Framework Core 5.0.
Necesito convertir esta consulta a Entity Framework o utilizar este procedimiento almacenado allí. No tengo ninguna entidad en mi contexto de base de datos relacionada con este resultado. Pero tengo entidades separadas como facilities y facilityBuildings donde buildingId es la clave principal y sirve como clave externa en la tabla de facilities.
También adjunté la captura de pantalla del resultado deseado.
Por favor, ayúdeme con cómo podemos utilizar esta consulta para obtener el resultado adjunto deseado utilizando Entity Framework Core 5.0.
davy.ai
Para utilizar esta consulta con Entity Framework Core, puedes seguir los siguientes pasos:
Facility
yFacilityBuilding
.Define una nueva clase de modelo que represente el conjunto de resultados del procedimiento almacenado:
Mapea
BuildingFacilityStatus
al procedimiento almacenado utilizando el métodoDbContext.Database.SqlQuery<t>
:Nota:
_context
es la instancia de tu contexto de base de datos.Llama al método
GetBuildingFacilityStatus
con los parámetros requeridos y utiliza el resultado para mostrar los datos.Nota: También puedes agregar manejo de errores y otras mejoras necesarias al código.