我有加载事件及其位置的存储过程但是当我尝试使用FromSql方法从我的Repository类调用它时,我只获取Event实体列表但不包括位置。我试图将Include方法添加到我的查询中,但我得到一个异常,说在调用存储过程时不能使用Inclued ...有没有办法做到这一点,或者我必须手动映射所有属性?
我的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
和我的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;
}
答案 0 :(得分:2)
以下是相关问题https://github.com/aspnet/EntityFrameworkCore/issues/3502 如果您使用sql函数而不是存储过程,它将与包含
一起使用