实体框架7表值函数支持

时间:2016-03-06 13:44:15

标签: entity-framework

我正在开发一个使用MVC 6和EF 7的项目。我需要使用地理位置从客户端到最近的商店。我已经读过EF 7中尚未提供空间数据。所以我认为我可以使用像这样的表值函数替代:

   ALTER FUNCTION [dbo].[GetPuzzle]
(   
    @lat float,
    @long float
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT city, ROUND(Location.STDistance(geography::Point(@lat, @long, 4326)) / 1000, 0) km FROM Shop
    WHERE Location.STDistance(geography::Point(@lat, @long, 4326)) / 1000 < 20
)

但我不知道(如果可能的话)如何使用EF7调用db函数。我已经尝试了一些相对于EF6的例子,但它没有用......

还有其他想法吗?感谢

1 个答案:

答案 0 :(得分:0)

有关使用Database First将TVF添加到EF6模型的演练,请参阅this article。好处是能够像Linq查询中的表一样使用TVF。缺点是创建模型的特殊处理。有时,通过更新数据库,删除模型,然后从数据库重新生成模型,最简单的方法是对EF6模型进行更改。但是使用这种方法,每次都必须在模型上执行额外的手动步骤。