EF Core 2.0 FromSql加载相关实体

时间:2017-09-19 15:07:05

标签: c# sql-server .net-core entity-framework-core

我有加载事件及其位置的存储过程但是当我尝试使用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;
    }

1 个答案:

答案 0 :(得分:2)

以下是相关问题https://github.com/aspnet/EntityFrameworkCore/issues/3502 如果您使用sql函数而不是存储过程,它将与包含

一起使用