我们有以下TVF,带有TableType输入参数。我们已将函数和函数import添加到我们的edmx模型(数据库第一种方法)。当我们尝试使用dbContext.Function调用该函数时,唯一的输入参数是@radius。似乎实体框架没有认识到存在第二个输入参数(TableType)。最终我们希望将DataTable作为此参数传递。
CREATE FUNCTION [dbo].[fnWhatever] (
@UserPOIList UserPOIListTableType READONLY,
@Radius INT
)
RETURNS TABLE
AS
RETURN
WITH AllZipsRanked
AS (SELECT POI.UserPOIID
, Zip = ZipsWithinDistance.ZipCode
, ZipsWithinDistance.Distance
, RankZipDistance = ROW_NUMBER () OVER (PARTITION BY ZipsWithinDistance.ZipCode ORDER BY ZipsWithinDistance.Distance ASC)
FROM dbo.UserPOI POI
JOIN @UserPOIList UserPOIIDs ON POI.UserPOIID = UserPOIIDs.UserPOIID
CROSS APPLY mapping.fnGetZipsWithinDistanceLatLong (POI.LONGITUDE, POI.LATITUDE, @Radius) ZipsWithinDistance)
SELECT UserPOIID
, Zip
, Distance
FROM AllZipsRanked
WHERE RankZipDistance = 1