2016-03-06 37 views
2

我正在开发一个MVC 6和EF 7项目。我需要使用地理位置从客户端获取最近的商店。我读过,空间数据尚未在EF 7.因此,我以为我可以作为一种替代使用一个表值函数,这样可供选择:实体框架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的例子,但它不起作用...

任何其他想法?谢谢

回答

0

请参阅this article了解使用数据库优先向EF6模型添加TVF的步骤。好处是可以在您的Linq查询中像使用表一样使用TVF。缺点是创建模型的特殊处理。有时,通过更新数据库,删除模型,然后从数据库重新生成它,对EF6模型进行更改是最容易的。但是通过这种方法,每次都必须在模型上执行额外的手动步骤。