Ho memorizzato la procedura che carica gli eventi e le loro posizioni ma quando provo a chiamarla dalla mia classe di repository utilizzando il metodo FromSql ottengo solo l'elenco delle entità Event ma le posizioni non sono incluse. Ho provato ad aggiungere il metodo Include alla mia query, ma ho ricevuto un'eccezione che dice che Inclued non può essere utilizzato quando si chiama stored procedure ... Esiste un modo per farlo o devo mappare manualmente tutte le proprietà?
Il mio SP:
ALTER PROCEDURE [dbo].[GetEventsByDistance]
@Latitude float,
@Longitude float,
@Radius int
AS
with MyCte as
(
select dbo.fnCalcDistanceKM(l.Latitude, l.Longitude, @Latitude, @Longitude) as distance, a.*, l.*
from dbo.Events a
JOIN Locations as l ON l.IdLocation = a.LocationId
)
SELECT
*
From MyCte
where distance < @Radius
RETURN
e il mio codice C #
public async Task<List<Event>> GetEventsByDistance(string latitude, string longitude, int radiusInKm)
{
var events = new List<Akce>();
using (var context = _factory.CreateDbContext(null))
{
events = await context.Akce.FromSql($"{Constants.DB_PROC_GetEventsByDistance} {latitude}, {longitude}, {radiusInKm}").ToListAsync();
}
return events;
}
Ecco il problema correlato https://github.com/aspnet/EntityFrameworkCore/issues/3502 Se si utilizza la funzione sql invece della stored procedure, funzionerà con Include